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后面,放的是空格。。。

  • 相关阅读:
    转:【译】CSS3:clip-path详解
    转---JS 一定要放在 Body 的最底部么?聊聊浏览器的渲染机制
    转---30 分钟学会 Flex 布局
    转---单页面应用下的JS内存管理
    转---移动端 h5开发相关内容总结——CSS篇
    转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
    转---写一个网页进度loading
    转---内存空间详细图解
    转---前端跨域请求原理及实践
    简单记录常用git 命令
  • 原文地址:https://www.cnblogs.com/CreatorKou/p/8763792.html
Copyright © 2011-2022 走看看