zoukankan      html  css  js  c++  java
  • vector元素去重uninque函数,erase函数

      

    题目描述

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

    Input Param 

         n               输入随机数的个数     

     inputArray      n个随机整数组成的数组 

         

    Return Value

         OutputArray    输出处理后的随机整数


    注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<vector>
     4 using namespace std;
     5 int main()
     6 {
     7     vector<int> data;
     8     int temp;
     9     int len=0;
    10     while(cin >> len){
    11         if(!len)break;
    12         for(int i=0;i<len;++i){
    13             cin >> temp;
    14             data.push_back(temp);
    15         }
    16         sort(data.begin(),data.end());
    17         data.erase(unique(data.begin(),data.end()),data.end());
    18 
    19         for(auto n : data){
    20             cout << n << endl;
    21         }
    22         data.clear();
    23         vector<int>().swap(data);
    24     }
    25     return 0;
    26 }

    注:unique函数功能是去除相邻的重复元素,注意是相邻,所以必须先使用sort函数。还有一个容易忽视的特性是它并不真正把重复的元素删除。之所以说比不真正把重复的元素删除,因为unique实际上并没有删除任何元素,而是将无重复的元素复制到序列的前段,从而覆盖相邻的重复元素。unique返回的迭代器指向超出无重复的元素范围末端的下一个位置。

    另一种方法:

    vector<int>::iterator it =unique(ivec.begin(),ivec.end()); 
      copy(ivec.begin(),it,ostream_iterator<int>(cout," ")); 
    另外我测试了如果对于字符串,不是将重的字符串放在ivec后面,放的是空格。。。

  • 相关阅读:
    C#调用Windows Api播放midi音频
    AutoCAD.net利用Xaml创建Ribbon界面
    WCF 不支持泛型协议 及 通过父类给子类赋值 通过反射加工
    windows右键菜单自动打包发布nuget,没有CI/CD一样方便!
    体验用yarp当网关
    .Net5 中使用Mediatr 中介者模式下的CQRS
    Vue-Router 路由属性解析
    Vue 3.0+Vite 2.0+Vue Router 4.0.6+Vuex 4.0.0+TypeScript +Yarn
    程序设计语言与语言处理程序基础.md
    Visual Studio 2019 舒适性设置
  • 原文地址:https://www.cnblogs.com/CreatorKou/p/8763792.html
Copyright © 2011-2022 走看看