我正在尝试创建一个数据结构,其中有一个平衡的BST和一个双向链表。链表将小于BST,因此在任何时候都将仅包含BST中的一部分元素.LL的每个节点都将指向BST节点将指向其LL节点,如果该节点出现在链表中,则BST节点将指向其LL节点,否则将存储null。
为了创建这个数据结构,我打算对BST使用std::set ,对双向链表使用std::list 。如果我存储对每个其他元素迭代器的引用可以很好地做到这一点。那么该集合是否有可能进行平衡,从而使链表持有的迭代器无效。方法是否存在其他问题?
如何在C++中使用STL或任何其他库来执行此操作?
(我想创建此数据结构来创建LRU缓存)
最佳答案
当您在集合中插入新元素时,std::set
迭代器保持有效,因此当将迭代器保存在列表中时,这不会引起问题。从集合中擦除元素将使这些元素的迭代器无效(显然),但是其他迭代器仍然有效。
关于c++ - 创建由链接的平衡bst和双链表组成的数据结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16523051/