gpt4 book ai didi

c++ - 如何创建尾后迭代器?

转载 作者:太空狗 更新时间:2023-10-29 23:19:24 25 4
gpt4 key购买 nike

我创建了一个二叉树结构来存储有界卷层次结构,为了使其更易于使用(也更安全),我创建了两个迭代器来补充它:广度优先和深度优先。

广度优先迭代器本质上是底层 QList 的包装器。但是我被困在深度优先迭代器上(仅限双向),我可以处理围绕树的实际迭代,我只是不知道如何创建尾后迭代器。

我不能只使用 QList::end(),因为不能保证最低级别的最右节点也是整棵树的最右节点。我不愿意制作一个可以测试的“假”BVH 节点,因为它会涉及大量代码更改(可能还有开销),以使各种节点管理机制忽略假节点,并禁用大量树构建自动化(例如,假节点的父节点必须被告知它是一片叶子)。但如果这是唯一的方法 - 那么它就是唯一的方法。

最佳答案

简要查看了 qlist.h 后,您似乎无法对两种迭代类型使用相同的 end()。但这没关系——您可以使用空指针或静态虚拟对象或其他技术为您的第二个迭代方法创建一个 end() 迭代器。我不明白为什么这会影响大量其他代码(其中大部分应该只引用 end() 而不知道其实现细节)。

关于c++ - 如何创建尾后迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com