unique()是C++标准库函数里面的函数,位于头文件#include<algorithm>中,其功能是去除相邻的重复元素(只保留一个),所以使用前需要对数组进行排序
运行结果
该函数的一个使用方法,对于长度为n数组arr,unique(arr,arr+n) - arr返回的是去重后的数组长度
那它是怎么实现去重的呢?删除?
不是,它并没有将重复的元素删除,而是把重复的元素放到数组的最后面藏起来了
当把原长度的数组整个输出来就会发现:
#include<stdio.h>
#include<algorithm>
using namespace std;
const int N = 1005;
int arr[N];
void Print(int n){
for(int i=0;i<n;i++)
printf("%d ",arr[i]);
printf("\n");
}
int main(){
int n;
scanf("%d",&n);
printf("排序前\n");
for(int i=0;i<n;i++)
scanf("%d",&arr[i]);
sort(arr,arr+n);
printf("排序后\n");
Print(n);
int type=unique(arr,arr+n)-arr;
printf("unique去重之后\n");
Print(n);
return 0;
}