STL 中的 unique() 算法可以可以在序列中原地移除重复的元素,这就要求被处理的序列必须是正向迭代器所指定的。
在移除重复元素后,它会返回一个正向迭代器作为新序列的结束迭代器。可以提供一个函数对象作为可选的第三个参数,这个参数会定义一个用来代替 == 比较元素的方法。
#include <algorithm>
iterator unique(iterator it_1,iterator it_2);
iterator unique(iterator it_1,iterator it_2,bool MyFunc);
参数 | 描述 |
---|---|
it_1 | 输入迭代器 |
it_2 | 输入迭代器 |
MyFunc | 比较规则 |
使用 STL unique 函数去除集合重复元素
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
std::cout << "嗨客网(www.haicoder.net)\n" << std::endl;
vector<int> a = {1,3,3,4,5,6,6,7};
vector<int>::iterator it_1 = a.begin();
vector<int>::iterator it_2 = a.end();
vector<int>::iterator new_end;
new_end = unique(it_1,it_2);
a.erase(new_end,it_2);
cout<<"删除重复元素后的 a : ";
for(int i = 0 ; i < a.size(); i++)
{
cout << a[i] << " ";
}
cout<<endl;
return 0;
}
我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ unique.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们使用了 unique 函数,实现了去除集合中的重复元素。
STL 中的 unique() 算法可以可以在序列中原地移除重复的元素,这就要求被处理的序列必须是正向迭代器所指定的。