我正在尝试创建一个数据结构,其中有一个平衡的BST和一个双向链表。链表将小于BST,因此在任何时候都只能保存来自BST的每个元素的子集。 LL将指向BST中的相应节点,如果节点存在于链表中,则BST节点将指向其LL节点,否则将存储空。
为了创建这个数据结构,我计划使用std :: set< data,std :: list :: iterator>对于BST和std :: list< data,std :: set :: iterator>对于双向链表。如果我将引用存储到每个其他元素迭代器来执行此操作就没问题了。是否有任何机会该集可能会进行平衡和转换使链表所持有的迭代器无效。可能还有任何其他问题的方法?
如何使用STL或任何其他库在C ++中执行此操作?
(我想创建这个数据结构以创建LRU缓存)
答案 0 :(得分:2)
std::set
迭代器仍然有效,因此当您将迭代器保留在列表中时,这不会导致问题。从集合中删除元素将使这些元素的迭代器无效(显然),但其他迭代器仍然有效。
答案 1 :(得分:0)
C ++中带有双向链表的平衡二叉搜索树
在这里:
http://archive.gamedev.net/archive/reference/programming/features/TStorage/index.html