map::erase的使用

来源:互联网 发布:反淘宝 编辑:程序博客网 时间:2024/05/18 11:17

int main(int argc, char* argv[]){    map<string, string> mapData;        mapData["a"] = "aaa";     mapData["b"] = "bbb";     mapData["c"] = "ccc";     for (map<string, string>::iterator i=mapData.begin(); i!=mapData.end(); )    {        if (i->first == "b")        {            mapData.erase(i++);        }        else        {            i++;        }    }    return 0;}

i++操作主要做三件事情:

1、首先把i备份一下;

2、把i加上1;

3、返回第一步备份的i。

mapData.erase(i++);在执行erase之前,i已经被加1了。erase会使得以前那个未被加一的i失效,而加了一之后的新的i是有效的。

0 0