unique函数
unique()函数是一个去重函数,STL中unique的函数unique的功能是去除相邻的重复元素(只保留一个),还有一个容易忽视的特性是它并不真正把重复的元素删除。他是c++中的函数,所以头文件要加#include,具体用法如下:
int num[10];
unique(num,nun+n)返回的是num去重后的不重复元素的尾地址,之所以说比不真正把重复的元素删除,其实是,该函数把重复的元素移到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以使用之前需要排一下序。
下面是一个使用unique函数进行去重的一个小例子,相信你如果看明白下面这个例子的话,你也将会使用unqiue函数进行去重。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int num[10]={1,2,3,8,7,5,3,1,2,4};
int main()
{
sort(num,num+10);
cout<<"去重之前的元素:"<<endl;
for(int i=0;i<10;i++)
{
cout<<num[i]<<" ";
}
cout<<endl;
sort(num,num+10);
int len=unique(num,num+10)-num;//去重之后不重复元素的个数
cout<<"去重后元素的个数为:"<<len<<endl;
cout<<"去重后的元素为:";
for(int i=0;i<len;i++)
{
cout<<num[i]<<" ";
}
cout<<endl;
return 0;
}
/*
去重之前的元素:
1 1 2 2 3 3 4 5 7 8
去重后元素的个数为:7
去重后的元素为:1 2 3 4 5 7 8
*/
当然unique也可以对字符串进行去重。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str("Helloword!_Helloword!");
cout<<str<<endl;
sort( str.begin(),str.end());//排序
cout<<str<<endl;
str.erase(unique(str.begin(),str.end()),str.end());//unique()把重复的元素移到最后并返回去重后最后一个元素地址
cout<<str<<endl;
return 0;
}