我試圖從一個向量中移除一個元素。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