我发现了下面这个函数,它对由main()传递下来的数组进行排序、去重,并返回唯一元素的数量。最后一部分让我很难理解。
据我理解,unique() 返回一个指针,它指向存储数组中唯一值的段的末尾。但是我不明白为什么从迭代器中减去数组名称会导致一个等于唯一元素数量的整数,或者为什么不能将
int reduce(long ar[], int n) {
sort(ar, ar + n);
return unique(ar, ar + n) - ar; // ???
}
据我理解,unique() 返回一个指针,它指向存储数组中唯一值的段的末尾。但是我不明白为什么从迭代器中减去数组名称会导致一个等于唯一元素数量的整数,或者为什么不能将
unique(ar, ar+n)
强制转换为int来实现相同的结果。
unique
函数。 - jogojapan