unique的功能
是去除相邻的重复元素(只保留一个),但是它并不真正把重复的元素删除而是把重复的元素放到数组的最后面藏起来了
先排序才能去重
作用一:对vector元素去重
#include<bits/stdc++.h> using namespace std; //STL中vector使用unique()去重 int main(){ int n,x; while(scanf("%d",&n)!=EOF){ vector<int> mm; int i,j,k; for(int i=0;i<n;i++){ scanf("%d",&x); mm.push_back(x); } sort(mm.begin(),mm.end()); mm.erase(unique(mm.begin(),mm.end()),mm.end()); for(int i=0;i<mm.size();i++){ printf("%d\n",mm[i]); } } }
作用二:对数组使用unique()去重
#include<bits/stdc++.h> using namespace std; //对数组使用unique()去重 int main(){ int n,x; while(scanf("%d",&n)!=EOF){ int mm[100]; for(int i=0;i<n;i++){ scanf("%d",&mm[i]); } sort(mm,mm+n);//先排序 int len1=unique(mm,mm+n)-mm;//不重复的数字个数 for(int i=0;i<len1;i++){ printf("%d ",mm[i]); } } }