一般來說vector不適合做經(jīng)常刪除的容器,但是在某些情況下,我們確實需要刪除vector的部分元素,一般的方式類為v.erase(remove_if(v.begin(), v.end(), func)).但是本人懶的把操做寫到另一個函數(shù)中,下面是一個更好的辦法
vector<int>::reverse_iterator rit = v.rbegin();
while (rit != v.rbegin())
{
if (func(*rit)) //檢查是否需要刪除
v.erase((++rit).base());
else
++rit;
}
其中reverse_iterator和iterator的關(guān)系與轉(zhuǎn)換是關(guān)鍵,STL真是設(shè)計的強大.