unique去重函数
unique去重函数
先sort,再unique
int n = unique(a,a+n) - a;
n为去重后数组长度
/**
一般来说,下面两个配套使用;
sort(a,a+n);
ans=unique(a,a+n)-a;
该函数的作用是“去除”容器或者数组中相邻元素的重复出现的元素,注意
(1) 这里的去除并非真正意义的erase,而是将重复的元素放到容器的末尾,
返回值是去重之后的尾地址。
(2) unique针对的是相邻元素,
所以对于顺序顺序错乱的数组成员,或者容器成员,需要先进行排序,可以调用std::sort()函数
**/
unique函数是C++STL容器中一个非常实用的函数,它可以用来对数组进行去重,非常的实用,我们通常把它用在sort()函数排序之后,它可以返回这个数列的最后一个
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[10]={1,1,1,2,2,3,8,7,8,9};
sort(a,a+10);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
int cnt=unique(a,a+10)-a;
cout<<cnt<<endl;
for(int i=0;i<cnt;i++)
cout<<a[i]<<" ";
return 0;
}
运行结果如下:

"unique"是C++语言中的STL函数,包含于
所以要先让容器变成有序的才可以。
用法:unique(数组名,数组名+长度),类似于sort(a,a+n)这样的操作。
时间复杂度单从unique来说是O(n),但是再加上之前的排序,就变成了O(nlogn);
unique() 函数一般是用来作为去重的函数的,例如:
vector alls;//存储所有数的值;
sort(alls.begin(),alls.end());//将所有的值排序
alls.erase(unique(alls.begin(),alls.end()),alls.end()); //去重;

浙公网安备 33010602011771号