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