vector <int> nums = {1, 1, 3, 3, 6, 10, 12, 12};
auto element = unique(nums.begin(), nums.end());
auto begin = nums.begin();
int result = element - begin;
cout << *element << endl; //10
cout << *begin << endl; //1
cout << el << endl; //5 unique numbers in the vector
cout << &element << endl;//0x7fffb577ed88
cout << &begin << endl;  //0x7fffb577ed90

我们如何获得5?如果unique(nums.begin(),nums.end())的地址为0x7ffebffb288和nums.begin()的地址为0x7ffebffb2850?

必须是8,不是吗?

最佳答案

std::unique这样做:



换句话说,通过从nums.begin()的返回值中减去unique(nums.begin(), nums.end())所获得的值是列表执行删除连续重复项的操作后的长度。您的 vector 中没有任何连续的重复项,我们有:1,3,6,10,12。

这是5个元素。

10-08 08:24
查看更多