是否存在像以下代码中那样从容器中移除元素的单一算法?
vec_it = std::remove_if( vec.begin(), vec.end(), pred );
vec.erase( vec_it, vec.end() );
最佳答案
惯用的方法就像 jalf 所说的那样。您可以构建自己的函数来更轻松地做到这一点:
template<typename T, typename Pred> void erase_if(T &vec, Pred pred)
{
vec.erase(std::remove_if(vec.begin(), vec.end(), pred), vec.end());
}
所以你可以使用
std::vector<int> myVec;
// (...) fill the vector. (...)
erase_if(myVec, myPred);
关于c++ - 从容器中删除元素的单语句方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/326112/