一般来说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真是设计的强大.