我需要在std :: set中找到一個元素的索引。這個索引可以被視爲迭代器從頭開始的距離。 單程可以是:std :: set begin()和std :: set O(logn)中的迭代器之間的距離
for(int i = 0, set<int>::iterator it = s.begin(); it != iteratorToBeFound; ++it, ++i);
這顯然需要O(n)時間。但是我們知道在O(log n)時間內可以找到由內部集合實現的二叉搜索樹中根的距離。
是他們的任何方式來實現相同的查找索引在O(log n)時間在C++集?
爲什麼你需要的索引? – paulm
您確定可以在二叉搜索樹中的'O(log n)'時間中找到距離嗎? 'set'通常是一棵紅黑樹,在每個節點上沒有很多關於左右子樹分別有多少元素的信息。請記住,您不是直接從根目錄查找距離,而是在查找葉子左側的葉子總數。 –
@SteveJessop:哦,所以他們沒有辦法計算R-B樹中O(logn)的索引嗎? – divanshu