从矢量中删除所有重复值?

时间:2015-09-16 17:04:22

标签: c++

输入:

1 1 2 2 3  

期望的输出:

3  

这是我的代码:

#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <cmath>
#include <cstdlib>
#include <cassert>
#include <iostream>
using namespace std;

int main(){
   vector<int> v;
   vector<int>::iterator it;
   // input variables
   int input, a, arr[10000];
   // input 
   cin >> input;
   // comment all your loops, etc
   for(int i = 0; i < input ; i++){
       cin >> a;
       arr[i] = a;
       v.push_back(a);
   }

   for(int j = 0; j < input; j++){
      int ch1 = arr[j];
      for(int i = 0;i < input; i++){
         if(i == j){
         }
         else{
            if(ch1 == arr[i]){
            v.erase(std::remove(v.begin(), v.end(), ch1),v.end());
            }
            else{
            }
         }
      }
   }

   for(it = v.begin(); it != v.end(); it++){
       cout << *it;
   }

  return 0;
}

erase()在这里工作不正常。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的问题是您使用名称v。

定义了两个变量
vector<int>v;
for(int v=0...

所以你基本上用int隐藏你的向量,编译器试图为int调用erase(),这会给你错误。

只需更改其中一个变量的名称即可。