2013-05-13 47 views
1

我想創建一個數據結構,其中有一個平衡的BST和一個雙向鏈表。鏈表將比BST小,因此在任何時候都只能保存BST中的元素的一個子集.L的每個節點將指向它在BST中的相應節點,並且如果節點存在於鏈表中,則BST節點將指向它的LL節點,否則它將存儲空值。創建一個由鏈接的平衡bst和雙向鏈表組成的數據結構

要創建這個數據結構,我計劃使用std :: set <數據,std :: list :: iterator>用於BST和std :: list < data,用於雙向鏈接的std :: set :: iterator> list.Is很好,如果我存儲引用到每個其他元素迭代器來做到這一點。是否有任何機會,該集可能會做平衡和inturn使鏈接列表持有的迭代器無效。可以有任何其他方法的問題嗎?

如何使用STL或任何其他庫在C++中執行此操作?

(我想創造這個數據結構來創建一個LRU緩存)當您插入集合中的新元素

回答

2

std::set迭代器仍然有效,所以當你不斷的迭代器在列表中這應該不會造成問題。從集合中清除元素將使迭代器無效(顯然),但其他迭代器保持有效。在C++

雙向鏈表