erase的傳回值會指向下一個節點
for(TStrMapIter iter= strmap.begin(); iter!= strmap.end();)
{
if ("somevalue" == iter->second )
{
iter = strmap.erase(iter);
}
else
{
++iter;
}
}
1. 為什麼要每次計算 strmap.end(), 執行 erase後,其end值可能會變(不是所有STL都是用 連結清單、有些使用數組, 元素會位移)
2. for裡面的iter++要寫在else中,因為erase 成功後, 傳回下一個指針。