//--------------------------------------------------------- // 移除map中满足条件的元素 //--------------------------------------------------------- // 1.创建map map<int, string> mapTest; mapTest.insert(map<int, string>::value_type(0, "0")); mapTest.insert(map<int, string>::value_type(1, "1")); mapTest.insert(map<int, string>::value_type(2, "2")); // 2.移除满足条件的元素 map<int, string>::iterator iter = mapTest.begin(); for (; iter != mapTest.end(); ) { if (iter->second == "1") { mapTest.erase(iter++); } else { ++iter; } } // 3.总结 map.erase(pos)是不返回pos的下一个迭代器的 注意if中的mapTest.erase(iter++); 而不是++iter //--------------------------------------------------------- // 移除map中key为某一值的元素 //--------------------------------------------------------- mapTest.erase(keyValue); 如果mapTest为multimap,则会删除key==keyValue的所有元素 如果在multimap中只想移除第一个key==keyValue的元素 则代码应当如此 pos = mapTest.find(keyValue); if (pos != mapTest.end()) { mapTest.erase(pos); }