c++ unique

最近,在做明明的随机数(http://joyoj.org/problem/29005)这道题,我本来看到“对于其中重复的数字,只保留一个,把其余相同的数去掉”时,原来想着自己用sort手撸一段去除代码,后来发现有去重函数unique。unique这个函数很不错。

1.头文件

建议使用万能头文件。

#include<bits/stdc++.h>

2.用法

sort(begin,end);
unique(begin,end);

*:begin和end需要替换成数组首地址和尾地址,先sort的原因是unique的函数只能去除相邻的重复。而且unique不可以在程序中使用两次。

3.小问题

在去重以后,数组长度会改变。其实没有改变,但是,请看图1

图(1)

4.问题解决

这个问题就是有效元素的问题。大家可以联系前面的内容想一想。好像没有解法!

如果想要输出去重后有效元素的个数,可以用

cout<<unique(randnumber,randnumber+number)-randnumber<<endl;

其实效果也是去重。只不过返回了有效元素个数的而已。

5.最终代码

最终,明明的随机数一题的解法是:

#include<bits/stdc++.h>
using namespace std; 
int main(){
    int number;
    cin>>number;
    int randnumber[number];
    for(int i=0;i<number;i++){
        cin>>randnumber[i];
    }
    sort(randnumber,randnumber+number);
    cout<<unique(randnumber,randnumber+number)-randnumber<<endl;
    for(int i=0;i<unique(randnumber,randnumber+number)-randnumber;i++){
        cout<<randnumber[i]<<" ";
    }
        return 0;
    }

-------------------------

至此,教程结束。

任何问题,请点击侧边的QQ联系按钮,联系我。

写于2019-11-04 21:59:57

猜你喜欢

转载自www.cnblogs.com/quqi/p/11795267.html