繁体   English   中英

我应该用什么 STL 容器来走一棵树?

[英]What STL container should i use to walk a tree?

我不知道双向是否意味着我可以编写 rbegin() 或者我是否可以减少迭代器。

我有一棵只向前的树,这不是问题。 我想走它。 我现在正在做的是每次我访问一个分支时,我都会推送 current_iterator。 现在的问题是我正在遍历一个分支并称为 function。 function 需要访问列表中之前的节点。

所以我写了it=current_iterator并计划写--it来倒带。 作为一个快速测试,我写了--o.begin()==o.end()看看我是否可以做到这一点。 我得到一个断言错误。

我正在使用双端队列。 在迭代过程中,我可以使用什么容器来允许我在交互器 go 上前后写= 看来我还需要保留o的副本,以便我可以比较.begin().end() 推荐的容器和技术是什么?

双端队列迭代器是随机访问的。 您可以增加和减少它们。

问题可能是您试图减少begin返回的迭代器。 这样做并不能保证给你列表的结尾——双端队列不是循环的。 (我认为这是未定义的行为,所以它可以给你结束,但我怀疑任何实现实际上都是这样做的。)

换句话说,您是否可以减少迭代器的测试不是有效的测试; 您从中得出的不能减少迭代器的结论也是无效的。 只要新位置也有效,您就可以递减任何有效的双端队列迭代器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM