我有一个std::list的Bananas,我想摆脱坏的.是否有任何相对简单的方法来执行以下伪代码?
foreach(Banana banana in bananaList)
{
if(banana.isBad()) bananaList.remove(banana);
}
Run Code Online (Sandbox Code Playgroud)
(从C#和Java转换到C++是一条艰难的道路.)
bananaList.remove_if(std::mem_fun_ref(&Banana::isBad));
Run Code Online (Sandbox Code Playgroud)
请注意,您可能应该使用std::vector而不是std::list- vector在99.9%的情况下表现更好,并且更容易使用.
编辑:如果您使用向量,向量没有remove_if成员函数,所以您必须使用plain remove_ifin namespace std:
bananaVector.erase(
std::remove_if(bananaVector.begin(), bananaVector.end(), std::mem_fun_ref(&Banana::isBad)),
bananaVector.end());
Run Code Online (Sandbox Code Playgroud)