unique函数的作用
- 功能是去除相邻的重复元素(只保留一个)
- unique函数不真正把重复的元素删除,其实是,该函数把重复的元素移到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的x下一个地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序
使用unique对vector进行去重
- 先对vector进行排序
- 使用erase函数结合unique进行去重
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[]) {
//对一个vector进行去重
vector<int> nums = {2, 2, 0, 2, 9, 0};
//先进行sort
sort(nums.begin(), nums.end());
//使用unique进行去重
auto new_begin = unique(nums.begin(), nums.end());
for(auto it:nums) cout<<it<<" ";
cout<<endl<<"去重之后"<<endl;
nums.erase(new_begin, nums.end());
for(auto it:nums) cout<<it<<" ";
}
执行结果:
0 2 9 2 2 9
去重之后
0 2 9
使用set进行去重
assgin函数是重用vector, 清除之前的内容,赋值新的内容。
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
int main(int argc, char *argv[]) {
//对一个vector进行去重
vector<int> nums = {2, 2, 0, 2, 9, 0};
set<int> s(nums.begin(),nums.end());
nums.assign(s.begin(),s.end());
for(auto it=nums.begin();it!=nums.end();it++){
cout<<*it<<endl;
}
}