函数功能与使用:
unique(a.begin,a.end) “删除”a当中相邻的重复值,并返回删除后的尾指针。
由于是相邻的重复值,所以需要先排好序。
例
int len=10,i;
int a[10]={5,3,2,2,1,2,6,6,4,5};
printf("len=%d\n",len);
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
printf("\n\n");
sort(a,a+10);
len=unique(a,a+10)-a;
printf("len=%d\n",len);
for(i=0;i<len;i++){
printf("%d ",a[i]);
}
printf("\n\n");
unique的删除在本质上并不是真的删除,而是将不重复的元素复制到前面,来覆盖重复元素,所以数组的长度本身没有发生变化。
也可以用动态数组实现,这样就可以真正实现删除功能了。
sort(a,a+10);
len=unique(a,a+10)-a;
printf("len=%d\n",len);
for(i=0;i<len;i++){
printf("%d ",a[i]);
}
printf("\n\n");