gpt4 book ai didi

c++ - 从 end() 函数返回的迭代器获取 BST 的最后一个节点?

转载 作者:行者123 更新时间:2023-11-28 06:22:22 28 4
gpt4 key购买 nike

我正在努力理解 end() 函数的实现要求,该函数返回一个指向最后一个元素的迭代器。过去的最后一个元素是什么意思?它不会总是为空吗?如果它不包含任何信息,那么我如何在 end() 的帮助下以 O(1) 的时间复杂度到达 BST 的最终节点?

最佳答案

“null”元素等概念在迭代器语义中根本不存在。从字面上看是没有意义的。迭代器不是原始的 C 指针。

如果迭代器为 bidirectional,则由您设计迭代器,使非空容器上的 end()-1 返回最终节点。开始。

对于前向迭代器的更一般情况,您真正希望的是 some 迭代器在最后一个元素递增时等于 end(),或 begin() == end() 当没有元素时。

这有时是通过让 end() 指向一个特殊节点来完成的,该节点的存在只是为了促进 end() 的功能。

例如,迭代器可以存储一个 bool 字段,指示它是否是 end() 的结果。迭代器可以保存任意多的信息。这是一种降低该数量的优化,但它是一个可选的。

当然,没有人强制您让 begin()end() 成为获取迭代器的唯一可用方法。

关于c++ - 从 end() 函数返回的迭代器获取 BST 的最后一个节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29110643/

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