一.
数组去重复数字:
1.
普通方法
cin >> m >> k;
for(int i = 1; i <= m; i++)
{
scanf("%d",
if(b[a[i]] == 1) {i--; m--;} //去重
else b[a[i]] = 1;
}
2.unique()函数
unique函数是一个去重函数,头文件要加#include<iostream.h>
unique函数的去重过程实际上就是不停的把后面不重复的元素移到前面来,也可以说是用不重复的元素占领重复元素的位置。
int main(){
int a[5]={1,2,2,3,4},i;
unique(a,a+5);
for(i=0;i<5;i++)
cout<<a[i];
return 0;
}
结果;a[]={1,2,3,4,4}
其中需要注意:这个函数只能对"相同元素在并邻在一块的"序列进行去重. 不能对相同元素七零八落地分布的一般序列进行去重。所以使用它必须要先过一遍sort排序。
再者,unique函数返的返回值是一个迭代器,它指向的是去重后容器中不重复序列的最后一个元素的下一个元素。所以如果想要得到不重复元素的个数就需要用返回值-开始地址。
int s[20]={1,8,5,8,5,4,2,5,1,2,1,6};
sort(s,s+12);
for(int i=0;i<12;i++)cout<<s[i]<<' ';
cout<<endl;
int ans=unique(s,s+12)-s;
cout<<ans<<endl;
1 1 1 2 2 4 5 5 5 6 8 8
6