我试图从一个向量中移除一个元素。C++:从一个向量中移除项目时的困难
vector<Foo> vecFoo;
Foo f1;
Foo f2;
Foo f3;
vecFoo.push_back(f1);
vecFoo.push_back(f2);
vecFoo.push_back(f3);
Foo* pF1 = &f1;
vecFoo.erase(std::remove(vecFoo.begin(), vecFoo.end(), *pF1), vecFoo.end());
最后一行产生大量的C2784错误。我究竟做错了什么?
(是的,这个例子是有点做作,但实质是,我有一个指向向量的元素,我想删除该元素。)
也许我错过了一些东西,但只要Foo有一个比较运算符,你可以很好地比较f1(或者OP的例子中的* pF1)和它的实际存储在std :: vector中的副本... – 2010-07-07 19:47:17
@Eugen,不,你不会错过任何东西,我对这个问题的结构有点困惑。我很想删除这个答案,但我仍然认为它可能有用;我对现实问题还不够了解。 – 2010-07-07 20:05:45