【发布时间】:2011-10-26 08:48:28
【问题描述】:
有没有办法在不定义const_iterator 的情况下使用boost foreach?
我的用例是一个向量的迭代器,它可以包含无效元素。迭代器应该遍历向量,并且只产生有效元素。它还应该修复向量,因为它应该将每个无效项与下一个有效项交换,并在最后调整向量的大小。例如,如果 -1 表示无效值,则向量 [6,-1,-1,9,-1,2] 应迭代 6,9 和 2 并将向量保留为 [6,9,2]。
我尝试使用boost::iterator_facade 来实现它,但我想不出一种方法来实现const_iterator,因为向量可以通过删除无效值来改变,因此不能是const。
【问题讨论】:
-
迭代器本身不应该改变列表。算法改变列表是一回事。但是迭代器对象永远不应该这样做。
-
感谢您的提示,我是 C++ 新手,但仍在为一些概念而苦苦挣扎。冒着跑题的危险:你能提出另一种实现这种行为的方法吗?我想在迭代期间进行修复,所以我不必第二次循环它们。
标签: c++ boost foreach iterator constants