STL删除元素注意事项
生活随笔
收集整理的這篇文章主要介紹了
STL删除元素注意事项
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、vector、list
正確版本:
for(auto iter = a.begin(); iter != a.end(); )
{
if(*iter > 30)
{
iter = a.erase(iter);
}
else
{
iter++;
}
}
錯誤版本:
for(auto iter = a.begin(); iter != a.end(); ++iter)
{
if(*iter > 30)
{
a.erase(iter);
}
}
二、map
刪除map的元素,不能是?map[key]=NULL
這種做法沒有刪除<key,value>對,而改成了<key,NULL>
只能是
?? ? ?iterator it=map.find(key);
?? ? ?if(it!=map.end())
?? ? ? ? ? ??map.erase(it);
遍歷刪除問題:
正確版本:
for(;iter!=mapStudent.end();) { if((iter->second)>=aa) { //滿足刪除條件,刪除當前結點,并指向下面一個結點 mapStudent.erase(iter++); } else { //條件不滿足,指向下面一個結點 iter++; } } 錯誤版本: for(map<string, string>::iterator i = mapData.begin(); i != mapData.end(); ++i) { if(i->first == "b") { mapData.erase(i); ? } }轉載于:https://www.cnblogs.com/vinke2013/p/7209242.html
總結
以上是生活随笔為你收集整理的STL删除元素注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 提升图像对比度和亮度
- 下一篇: 在图像中绘制基本形状和文字