STL——unique去重函数

xiaoxiao2021-02-27  1.1K+

从北大资料的一段代码里学习到这个函数。时间方面没有严格核对过,但写起来很简洁

举一个

#include<iostream> #include<algorithm>// #include<cstdio> #define maxn 50005 using namespace std;// int main(){ int n; int cnt; int a[6]={2,1,1,1,8,10}; n=unique(a,a+6)-a; cout<<"a:"<<n<<endl; for(i=0;i<6;i++) cout<<a[i]<<endl; return 0; }输出结果为

a:4

2

1

8

10

8

10

原数组中第2,3,4位重复为1,使用unique函数后,无重数组长度为4,最后输出的前四个数就是去重的结果

总结一下:

unique函数:作用是去除数组中相邻的重复元素(必须相邻),一般排序后使用。返回结果是去重后最后一个数的地址。在C++中的STL库下,所以算法头文件和命名空间必须

但在最后还有8,10。这里就是要注意的——unuique函数根本不是删除空间,而是后面的数取代相邻重复的数,最后数组里还有之前的值(个人理解,希望可以留言指正,谢谢)

看到很多资料都是用在vector上进行stl函数操作的,确实这样比较合理。因为个人习惯等方面这篇文章里只是用在简单数组上,可能不够严谨。

网上的很多大神总结的很详细

比如:http://www.cnblogs.com/heyonggang/archive/2013/08/07/3243477.html

STL很强大,还有很多要学的

转载请注明原文地址: https://www.6miu.com/read-13.html

最新回复(0)