我遇到了以下函数,它对 main() 传递的数组进行排序,删除重复项,并返回唯一元素的数量。这是我很难缠住头的最后一点。
int reduce(long ar[], int n) {
sort(ar, ar + n);
return unique(ar, ar + n) - ar; // ???
}
据我了解,unique() 返回一个指向存储数组中唯一值的段末尾的指针。但是我不明白为什么从迭代器中减去数组名称会导致 int 等于唯一元素的数量,或者为什么unique(ar, ar+n)
不能将其类型转换为 int 以获得相同的结果。