输入:
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()
在这里工作不正常。
我该如何解决这个问题?
答案 0 :(得分:1)
您的问题是您使用名称v。
定义了两个变量vector<int>v;
for(int v=0...
所以你基本上用int隐藏你的向量,编译器试图为int调用erase(),这会给你错误。
只需更改其中一个变量的名称即可。