很容易犯的错误是直接erase,而丢掉了iterator信息,正确方式代码:for(iter = map.begin(); iter != map.end();) { if (shouldDelete(*iter)) map.erase(iter++);//这样应该也可以吧..iter=map.erase(iter); else ++iter; } 原文地址:http://blog.myspace.cn/e/403262356.htm 感谢~