遍历删除vector的中的元素

遍历删除vector的中的元素

一般来说vector不适合做经常删除的容器,但是在某些情况下,我们确实需要删除vector的部分元素,一般的方式类为v.erase(remove_if(v.begin(), v.end(), func)).但是本人懒的把操做写到另一个函数中,下面是一个更好的办法

vector < int > ::reverse_iterator rit  =  v.rbegin();
while  (rit  !=  v.rbegin())
{
    
if  (func( * rit))  // 检查是否需要删除
        v.erase(( ++ rit). base ());
    
else
       
++ rit;
}

其中reverse_iterator和iterator的关系与转换是关键,STL真是设计的强大.

你可能感兴趣的:(遍历删除vector的中的元素)