读书人

小弟我的unordered_地图一erase就崩溃

发布时间: 2012-09-08 10:48:07 作者: rapoo

我的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吗?

读书人网 >C++

热点推荐