C++:二叉搜索树 end() 迭代器

标签 c++ iterator binary-search-tree ranged-loops

我有 BST 的基本(无随机化、排序等)实现。我想添加迭代器实现并使 BST 适合基于范围的 for 循环。 所以我需要 begin()、end() 成员函数和迭代器递增。

我明白 begin() 应该做什么 - 将迭代器返回到最左下角的节点,并且 this thread讨论遍历 BST 的不同可能性(=递增迭代器)

但是 end() 应该将迭代器提供给最后一个元素。这是实际的问题,我不明白,在 BST 的背景下这是什么意思?

最佳答案

结束迭代器不一定必须是最后一个元素之后的一个(这对于 vector 有意义,但对于树等来说则不太有意义)。它必须只是一个可以清楚地识别为不是用于指示已到达数据结构末尾的有效迭代器的迭代器。

实际上,这可以通过多种方式完成,具体取决于迭代器如何引用它所指向的内容。例如,如果它使用指向树节点的指针,则可以将空指针用于结束迭代器。

关于C++:二叉搜索树 end() 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27043638/

相关文章:

c++ - Jenkinsfile 运行 qmake

python - 跳过可迭代元素的优雅方式

c++ - 如何在不递增(递减)迭代器的情况下获取 std::list 中的下一个(上一个)元素?

C++ 无法将函数传递给二叉搜索树遍历方法

c++ - 如何创建自定义的shared_ptr?

c++ - GLSL-SSAO : Getting undesired results when fetching depth position

c++ - 将 std::vector 的拷贝附加到其自身的末尾

haskell - Haskell 中的二叉搜索树函数

java - 添加数据时出现 NullPointerException - Java

c# - 是否有一种算法可以确定二维空间中的一组点是否形成一个封闭区域?