使用删除之前的迭代器定位下一个元素。STL建议的使用方式 std::map<int,string> a; a.insert(make_pair(1,string("1"))); a.insert(make_pair(2,string("2"))); a.insert(make_pair(3,string("3"))); a.insert(make_pair(4,string("4"))); std::map<int,string>::iterator it=a.begin(); while(it!=a.end()) { cout<<it->first<<":"<<it->second<<endl; a.erase(it++); }