当BOOST_FOREACH遍历容器时更改容器
Changes to a container while BOOST_FOREACH is iterating through it?
如果在BOOST_FOREACH作用域中更改了BOOST_FOREACH正在迭代的容器,会发生什么?
BOOST_FOREACH"冻结"初始状态吗?
在这种情况下,行为是未定义的。查看BOOST_FOREACH
官方文档中的提升和迭代器失效
我想这取决于容器。
真正的问题是,用于遍历的(剩余的)迭代器范围是否无效。
这取决于变化。std
算法指定了它们的行为:它们提到哪些迭代器在什么时候失效。
也可以取决于迭代器的类型
-
vector::erase
使所有后续迭代器失效 -
list::erase
不
相关文章:
- cpp 为什么 boost::线程内部的循环不遍历所有值并且推送相同的值?
- boost::asio::buffer 如何遍历字节
- boost multi_index - 如果元素类型仅支持移动语义,如何遍历它?
- 使用自定义的边缘属性 boost::adjacency_list 遍历边缘
- boost::iterator_adaptor 的遍历类别是否由适配迭代器的类别决定
- C++:尝试遍历 boost::unordered_map<string,int> 时,运算符不匹配<
- 如何以相反的顺序遍历 boost::d ynamic_bitset
- 使用Boost遍历目录失败
- 使用迭代器遍历boost::ublas矩阵
- 如何仅搜索文件夹(同时使用boost遍历目录)
- 如何遍历boost::fusion关联结构并以通用方式访问键
- 使用range遍历boost::month_iterators
- 使用boost::filesystem遍历目录而不抛出异常
- 如何在boost::序列化中遍历归档
- 让static_visitor在遍历Boost递归变量时修改它
- Boost 1.46.1,属性树:如何遍历ptree接收子ptree
- 使用 boost::variant 遍历树节点的模板
- 如何遍历一个图分支,从特定的节点与Boost.Graph
- Boost图对有向图的无向遍历
- 如何遍历boost::multi_array