std::unique (去重)

来源:互联网 发布:win10网络设置在哪 编辑:程序博客网 时间:2024/06/05 11:14

std::unique

#include<iostream>#include<cstdlib>#include<vector>#include<algorithm>using namespace std;typedef int I;typedef char C;typedef int ARR[10];#define N 3#define X(a,b) (((a)+(b))*3)bool myFunction(I a,I b){return a==b;}void f1(){I ints[]={10,20,20,20,30,30,20,20,10};//定义vector对象vector<I> myVector(ints,ints+9);//定义iterator变量vector<I>::iterator it;cout<<"myVector:";for(it=myVector.begin();it!=myVector.end();it++)cout<<' '<<* it;cout<<endl<<'\n';sort( myVector.begin(), myVector.end() );//unique 10 20 30 20 10 ? ? ? ?it=unique(myVector.begin(),myVector.end());//resize() 重新调整对象大小 10 20 30 20 10myVector.resize(distance(myVector.begin(),it));//有3个参数的uniqueunique(myVector.begin(),myVector.end(),myFunction); // no changes (无变化)cout<<"myVector contains:";for(it=myVector.begin();it!=myVector.end();it++)cout<<' '<<* it;cout<<endl;}int main(int argc,char * argv[]){f1();cout<<endl;cout<<argc<<endl<<* argv<<endl;return 0;}


unique就是让连续的相同值变成一个。

如果全想去重的话

将myVector排序  //sort(myVector.begin(),myVector.end());

只要在去重前排序一下就行。



1 0