CicyIris

避免存储end操作返回的迭代器

在vector或deque容器中添加元素时,可能导致某些或全部迭代器失效。下边是一个例子:

vector<int>::iterator first=v.begin(), last=v.end();

while(first!=last)

{

first=v.insert(first,42);

++first;

}

   很多情况下,上边的代码会导致死循环。为了避免存储end迭代器,需要在每次插入新元素后重新计算end迭代器值:

while(first!=v.end())

{

first=v.insert(first,42);

++first;

}

posted on 2010-10-26 14:24  CicyIris  阅读(203)  评论(0)    收藏  举报

导航