1

有沒有人知道boost :: multi_index庫中迭代器投影的複雜性?文檔可以在這裏找到boost::multi_index projection of iterators,但它沒有說明操作的複雜性。boost :: multi_index容器中迭代器功能投影的複雜性

其基本思想是你可以檢索一個迭代器到一個索引內的對象,然後將其投影到第二個索引中,並獲得一個迭代器到同一個對象,但在第二個索引中。如果這是一個O(1)操作,那麼您可以有效地維護兩個索引,一個可以在快速時間內搜索到,另一個可以在較慢時搜索到。據我所知,迭代器的投影允許我在索引中查找更快速搜索的對象,然後將其投影到較慢搜索的索引中。

我很想知道它是否是一個簡單的O(1)查找迭代器的投影,或者它是否有效地在第二個索引中啓動查找操作,因此取決於您正在投影的特定索引並且比O(1)慢。

非常感謝您的幫助!

回答

2

這是一種持續時間,如documentation指定的,而事實上,以最快的速度,因爲它得到:

template<int N,typename IteratorType> 
    typename nth_index_iterator<N>::type project(IteratorType it) 
    { 
    typedef typename nth_index<N>::type index_type; 
    ... 
    return index_type::make_iterator(static_cast<node_type*>(it.get_node())); 
    } 

這僅僅是通過任何指標迭代器保存的內部節點指針的重新換行。

+0

我不能爲我的生活找到你鏈接的文檔,這正是我一直在尋找的!我再一次快速而簡潔地回答了我的問題,謝謝華金! – ConfusedBoostUser