-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()
不能在這裏工作。
我該如何解決這個問題?
這不是一個調試服務。你的意思是你的擦除是「不工作」?同時格式化您的代碼。 – Barry
首先,函數級的'''循環陰影'v'向量中的'v'計數器;這就是爲什麼'v.erase'不可訪問。第二,如果你被允許使用另一個容器,檢測是否有重複,那麼爲什麼不直接導出整個'的std ::矢量'成'的std ::設置'一邊看每個插入的結果,並添加所有檢測到的複製另一個'的std ::設置',最後導出第一套回'的std ::矢量'除了在第二'的std ::設置'值? –
您沒有使用_STL_,我刪除了標籤。閱讀[tag:stl]的[tag wiki](http://stackoverflow.com/tags/stl/info),它並不是指你認爲它實際上是什麼! –