unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素用后面的元素覆盖掉(类似数组元素删除的过程),而返回值是去重之后最后一个元素的尾地址,下面举个例子。
由于返回的是容器末尾,所以如果想得到去重后的size,需要减去初始地址。
sz = unique(b + 1,b + n + 1)-(b + 1);//从下标1开始存储
sz = unique(a,a + n) - a;//从下标0开始存储
sort(a + 1,a + 1 + n); // 排序
n = unique(a + 1,a + 1 + n) - a - 1;//去重
//unique用法简介
# include < bits/stdc++.h >
using namespace std;
int main()
{
// 数组下标从0开始
int n,a[100];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a ,a + n); // 排序
n = unique(a ,a + n) - a;//去重后元素个数
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<n;
return 0;
}