2
stl RB-Tree(set或map)的迭代器++操作的复杂性是什么? 我一直以为他们会使用索引,因此答案应该是O(1),但最近我读了vc10的实现,并且震惊地发现他们没有。 要在有序RB树中查找下一个元素,需要花时间搜索右侧子树中的最小元素,或者如果该节点是左侧子元素,并且没有右侧子元素(右侧子元素中的最小元素)。这引入了递归过程,我相信++运算符需要O(lgn)时间。 我对不对?这是所有stl实现的情况还是只是visual C++?stl映射的迭代器++复杂性
维护RB树的索引真的很困难吗?只要我看到,通过在节点结构中保存两个额外的指针,我们就可以维持一个双向链表,只要RB-Tree。他们为什么不那样做?
请不要咆哮。编译器实现者比他们的实现更为乐观,并且比我们以往任何时候都更加正确。 – DumbCoder
这种问题不适合堆栈溢出。堆栈溢出显然不利于讨论或意见,而是主观事实。也许堆栈交换网络中的另一个站点更适合这个问题。 – mah