在这里我的代码.我希望通过成功调用方法'release'从vector中删除所有元素.
bool foo::release()
{
return true;
}
// ...
vector<foo> vec;
// ...
remove_if(vec.begin(), vec.end(), [](foo & f) { return f.release() == true; });
// ...
Run Code Online (Sandbox Code Playgroud)
但remove_if不要删除所有元素vector vec.怎么样remove_if?
jua*_*nza 10
std::remove_if重新排列向量的元素,使您想要保留的元素在范围内[vec.begin(), return_iterator)(注意部分开放的范围).因此,您需要调用std::vector::erase以确保向量仅包含所需的元素.这称为擦除删除习语:
auto it = remove_if(vec.begin(),
vec.end(),
[](foo & f) { return f.release() == true; });
vec.erase(it, vec.end());
Run Code Online (Sandbox Code Playgroud)
在这里,为了清晰起见,我将它分成两行,但它通常被视为一行.