说明
用途如其名,使容器内的元素唯一化。
但是用法要稍微注意一下。
头文件
#include <algorithm>
函数原型说明
template< class ForwardIt >
ForwardIt unique( ForwardIt first, ForwardIt last );
参数:first,last是两个迭代器,表明unique的范围。
返回值:返回一个迭代器,这个迭代器指向最后一个不重复元素的下一个值
unique() 会修改迭代器范围内的数据的,unique()本身不会删除数据,只是把不重复的元素放在容器的前面部分。
如果要删除不需要的元素,要另外借助erase()
去删除。
unique()的参数好理解,就是返回值有些难理解,下面举例说明。
例子
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cctype>
int main()
{
// remove duplicate elements
std::vector<int> v{1,2,3,1,2,3,3,4,5,4,5,6,7};
std::sort(v.begin(), v.end()); // 1 1 2 2 3 3 3 4 4 5 5 6 7
auto last = std::unique(v.begin(), v.end());
// v {1 2 3 4 5 6 7 x x x x x x} , x represent uncertain element
v.erase(last, v.end());
for (int i : v)
std::cout << i << " ";
std::cout << "\n";
}
1 2 3 4 5 6 7
返回值last
是指向7后的第一个x的迭代器
unique()
本身不删除元素,只是把不重复的元素放在容器的前面部分,后面的部分保持原来的顺序。
如果把上面的代码的v.erase(last, v.end());
删除,则结果如下,后面的顺序是原来的元素顺序:
1 2 3 4 5 6 7 4 4 5 5 6 7
网友评论