是否有一个算法可以从容器中删除元素,如下面的代码所示?
vec_it = std::remove_if( vec.begin(), vec.end(), pred ); vec.erase( vec_it, vec.end() );
Cyrille Ka.. 6
这样做的惯用方法就像jalf所说的那样.您可以构建自己的函数来更轻松地执行此操作:
templatevoid erase_if(T &vec, Pred pred) { vec.erase(std::remove_if(vec.begin(), vec.end(), pred), vec.end()); }
所以你可以使用
std::vectormyVec; // (...) fill the vector. (...) erase_if(myVec, myPred);
jalf.. 5
你的意思是这样的?
vec.erase( std::remove_if( vec.begin(), vec.end(), pred ), vec.end() );
这是实现它的惯用方法.
这样做的惯用方法就像jalf所说的那样.您可以构建自己的函数来更轻松地执行此操作:
templatevoid erase_if(T &vec, Pred pred) { vec.erase(std::remove_if(vec.begin(), vec.end(), pred), vec.end()); }
所以你可以使用
std::vectormyVec; // (...) fill the vector. (...) erase_if(myVec, myPred);
你的意思是这样的?
vec.erase( std::remove_if( vec.begin(), vec.end(), pred ), vec.end() );
这是实现它的惯用方法.