vector<int> a;
sort(a.begin(), a.end());
a.erase(unique(a.begin(), a.end()), a.end());
去重原理
//将所有满足以下性质的数拿出来
1)他是第一个出现的数
2)a[i] != a[i - 1]
vector<int>::iterator unique(vector<int> &a){
int j = 0;
for(int i = 0; i < a.size(); ++ i)
if(!i || a[i] != a[i - 1])
a[j ++] = a[i];
//此时从a[0] ~ a[j - 1]是所有a中不重复的数
return a.begin() + j;
}
完整代码
int n;
cin >> n;
vector<int> a;
for(int i = 0; i < n; ++ i) {
int x; cin >> x;
a.push_back(x);
}
sort(a.begin(), a.end());
a.erase(unique(a.begin(), a.end()), a.end());
cout << a.size() << endl;
for(int i = 0; i < a.size(); ++ i) {
cout << a[i] << ' ';
}