避免存储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;
}
浙公网安备 33010602011771号