【发布时间】:2018-10-04 00:14:33
【问题描述】:
我通过 std::algorithm 学习,发现了独特之处,但在我自己实践之后,我发现输出不是我所期望的,或者我应该说不是文档声称的那样:
从范围 [first, last) 中的每个连续等效元素组中删除除第一个元素之外的所有元素,并为范围的新逻辑结束返回一个过去的迭代器。
vector<int> val = { 5,3,3,3,4};
unique(val.begin(), val.end());
for (auto it = val.begin(); it != val.end(); ++it)
cout << *it << " ";
输出:5 3 4 3 4。它不应该返回:5 3 4 3 3。
我认为它需要先排序,所以我这样做:
vector<int> val = { 5,3,3,3,4};
sort(val.begin(), val.end());
unique(val.begin(), val.end());
for (auto it = val.begin(); it != val.end(); ++it)
cout << *it << " ";
输出为:3 4 5 4 5。
我发现这很奇怪。你们知道为什么吗?
【问题讨论】: