我不知道双向是否可以写rbegin()或者我是否可以减少迭代器。
我有一棵树只是前进的,这不是问题。我想走它。我现在正在做的是每次我访问分支机构时我都会推送current_iterator。现在的问题是我正在迭代一个分支并调用一个函数。该函数需要访问列表中的先前节点。
所以我写了it=current_iterator
并打算写--it
来回放。作为一个快速测试,我写了--o.begin()==o.end()
,看看我是否能做到这一点。我收到了一个断言错误。
我正在使用双端队列。我可以使用哪个容器,允许我在迭代器上写=
,在迭代过程中前进和后退?我似乎需要保留o
的副本,以便我可以比较.begin()
和.end()
。什么是推荐的容器和技术?
答案 0 :(得分:4)
Deque迭代器是随机访问的。你可以增加和减少它们。
问题可能是你试图减少begin
返回的迭代器。这样做不能保证给你列表的结尾 - deques不是循环的。 (我认为这是未定义的行为,所以可以给你结束,但我怀疑任何实现都是这样做的。)
换句话说,你是否可以减少迭代器的测试不是一个有效的测试;你从中得出的结论是,你不能递减迭代器也是无效的。只要新位置也有效,您就可以减少任何有效的deque迭代器。