加载中...

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()); //去重;

posted @ 2023-02-08 17:26  bujidao1128  阅读(374)  评论(0)    收藏  举报