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函数,包含于<algorithm>头文件中。功能是将数组中相邻的重复元素去除。然而其本质是将重复的元素移动到数组的末尾,最后再将迭代器末尾指向最后不重复的下标。
所以要先让容器变成有序的才可以。
用法: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()); //去重;
原文链接:https://blog.youkuaiyun.com/ftyykil/article/details/117386173