Вход:Удалить все повторяющиеся значения из вектора?
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()
не работает здесь.
Как я могу решить эту проблему?
Это не отладочная служба. Что значит «не работает»? Также отформатируйте свой код. – Barry
Прежде всего, ваш 'v' счетчик в' for' loop тень 'v' vector на уровне функции; поэтому 'v.erase' недоступен. Во-вторых, если вам разрешено использовать другой контейнер для обнаружения дубликатов, то почему бы просто не экспортировать весь файл 'std :: vector' в' std :: set 'во время просмотра результата каждой вставки и добавить все обнаруженные дубликаты к еще одному 'std :: set ' и, наконец, экспортируем первый набор обратно в 'std :: vector ' за исключением значений во втором 'std :: set '? –
Вы не используете _STL_, я удалил тег. Прочитайте [tag wiki] (http://stackoverflow.com/tags/stl/info) из [tag: stl], это не относится к тому, что вы на самом деле думаете! –