在这种情况下如何防止迭代器失效

时间:2016-02-23 18:36:52

标签: visual-c++

需要一些帮助。这就是我想做的事情

std::list<int> mylist;
std::list<int>::iterator it;
it = mylist.begin();  

for (int i=1; i<=5; ++i)    
mylist.push_back(i); // 1 2 3 4 5

mylist.insert (it,10);   // 10 1 2 3 4 5 expected but output is 1 2 3 4 5 10

我实际上需要在我的项目中做这样的事情。有更好的方法来实现这个目标

2 个答案:

答案 0 :(得分:0)

您在

之后编写代码it = mylist.begin();
for (int i=1; i<=5; ++i)    
mylist.push_back(i); // 1 2 3 4 5

因为它指向最后一个索引。

答案 1 :(得分:0)

存储索引而不是迭代器。这样就不会发生失效。