std::forward_list<int> foo {1,2,3,4,5};
for(int i:foo)
{
if(i==1) foo.push_front(0);
std::cout << i << std::endl;
}
我已经在Visual Studio和coliru上测试了它,而且根据我对如何设计单个链表的理解应该不会有问题。但是,我对forward_list的内部结构或stl容器和迭代器一般都不太了解,所以我想要确认:
以上代码是否安全?或者我是否在调用UB,它恰好在我的小测试中没有启动大灾难。
答案 0 :(得分:2)
添加,删除和移动列表中的元素或跨越元素 几个列表,不会使当前引用的迭代器无效 到列表中的其他元素。但是,迭代器或引用 引用元素时相应的元素无效 从列表中删除(通过erase_after)。