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