从北大资料的一段代码里学习到这个函数。时间方面没有严格核对过,但写起来很简洁
举一个
#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很强大,还有很多要学的