2015-09-16 3 views
-1

Вход:Удалить все повторяющиеся значения из вектора?

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() не работает здесь.

Как я могу решить эту проблему?

+2

Это не отладочная служба. Что значит «не работает»? Также отформатируйте свой код. – Barry

+1

Прежде всего, ваш 'v' счетчик в' for' loop тень 'v' vector на уровне функции; поэтому 'v.erase' недоступен. Во-вторых, если вам разрешено использовать другой контейнер для обнаружения дубликатов, то почему бы просто не экспортировать весь файл 'std :: vector ' в' std :: set 'во время просмотра результата каждой вставки и добавить все обнаруженные дубликаты к еще одному 'std :: set ' и, наконец, экспортируем первый набор обратно в 'std :: vector ' за исключением значений во втором 'std :: set '? –

+0

Вы не используете _STL_, я удалил тег. Прочитайте [tag wiki] (http://stackoverflow.com/tags/stl/info) из [tag: stl], это не относится к тому, что вы на самом деле думаете! –

ответ

1

Ваша проблема заключается в том, что вы определяете две переменные с именем ст.

vector<int>v; 
for(int v=0... 

Таким образом, вы в основном скрыть свой вектор с междунар и компилятор пытается вызвать Стирание() для междунар, который дает ошибку.

Просто измените имя одной из этих переменных.

+0

где эта другая переменная с тем же именем? – Ziezi

Смежные вопросы