首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

std:list的erase有关问题(代码只有6行)

2012-03-08 
std::list的erase问题(代码只有6行)C/C++ codeint main(){std::listint testtest.push_back(1)for (st

std::list的erase问题(代码只有6行)

C/C++ code
int main(){    std::list<int> test;    test.push_back(1);    for (std::list<int>::iterator iter=test.begin(); iter!=test.end(); iter++)    {        iter = test.erase(iter);    }    return 0;}


有一直以为这样做是对的,结果崩溃了.

[解决办法]
for后面的it++去掉。
[解决办法]
C/C++ code
//iter++去掉   下面是额外的if(/*.......*/)//加个条件{iter = test.erase(iter);}else{iter++;}
[解决办法]
你这样删除必然会崩溃,你调用eraser把list结构破坏了,list在内存的位置就改变了,然而你好用以前的指针(iterator本质为指针)来访问当然会出问题

热点排行