我的unordered_map一erase就崩溃.程序错在哪里?
我写了几行小程序:
- C/C++ code
#include<string>#include<unordered_map>using namespace std;int main(int argc, char* const argv[]){ unordered_map<string,int> my; for(int i=0;i<10;++i){ char buf[100]; itoa(i,buf,10); my.insert(make_pair(buf,i)); } printf("contruction finish\n"); getchar(); for(auto it=my.begin();it!=my.end();++it){ my.erase(it); } printf("erase finish\n"); getchar(); printf("clear finish\n"); my.clear(); getchar(); return 0;}结果是在erase那里一运行就崩溃。这是为什么? 我的程序错在哪里?
[解决办法]
erase 要用 while, 使用它的返回值继续迭代.
- C/C++ code
auto it=my.begin();while(it!=my.end()) it = my.erase(it);
[解决办法]
楼主是用的VS2010吗?