unique使用
unique函数去重并不是真正的去重,它是不断的将后面不重复的元素覆盖前面重复的元素,最后返回最后一个不重复的元素的地址。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n, i;
cin >> n;
int a[10];//我就是定义一个足够大的数组,这里不是重点
for (i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n);//这里就是排序
int x = unique(a, a + n) - a;//关键点来了,unique(a, a + n)返回5(最后一个不重复元素的下一个位置)的地址
//这里x表示去重后还剩多少个数
//记得减去前端点
cout << x << endl;//x就是排序后没有重复元素的长度
cout << "只输出去重后的元素" << endl;
for (i = 0; i < x; i++)
{
cout << a[i] << " ";
}
cout << endl;
cout << "输出此时数组的全部元素" << endl;
for (i = 0; i < n; i++)
{
cout << a[i] << " ";
}
return 0;
}
输入:
10
1 1 3 3 5 5 7 7 9 9
输出:
5
只输出去重后的元素
1 3 5 7 9
输出此时数组的全部元素
1 3 5 7 9 5 7 7 9 9