Я пытаюсь удалить объект из вектора в C++, но он задает странную (и длинную) ошибку. Я написали это:Удалить объект из вектора в C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class foo
{
int a;
public:
foo(int _a):a(_a){}
};
int main() {
foo f1(5),f2(10);
vector<foo> vec = {f1,f2};
vec.erase(remove(vec.begin(),vec.end(),f1),vec.end()); // remove f1 (error)
return 0;
}
Точная ошибка, которую я получаю, это here.
С другой стороны, когда я создаю вектор int, а затем пытаюсь удалить целое число из этого вектора, он отлично работает.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> vec = {5,10};
vec.erase(remove(vec.begin(),vec.end(),5),vec.end()); // works fine
return 0;
}
Я не уверен, почему в первом случае возникает ошибка.
Сообщения точным сообщения об ошибке –
Там нет 'Foo :: оператора ==' –
Я думаю, вы получите сообщение об ошибке, потому что у вас нет оператора сравнения, определенного для ' foo'. Как компилятор знает, как сравнивать экземпляры класса 'foo'? –