我正在努力理解 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/