1

有谁知道 boost::multi_index 库中迭代器投影的复杂性?文档可以在这里找到boost::multi_index projection of iterators但它没有说明操作的复杂性。

基本思想是,您可以检索索引内对象的迭代器,然后将其投影到第二个索引中,并获取同一对象但在第二个索引内的迭代器。如果这是一个 O(1) 操作,那么您可以有效地维护两个索引,一个是可快速搜索的,一个是较慢的。据我了解,迭代器的投影允许我在索引中找到一个搜索速度更快的对象,然后将其投影到搜索速度较慢的索引中。

我很想知道它是否是迭代器投影的简单 O(1) 查找,或者它是否有效地启动了第二个索引中的查找操作,因此取决于您投影到的特定索引并且速度较慢比 O(1)。

非常感谢您的帮助!

4

1 回答 1

2

正如文档中所指定的那样,它是恒定的时间,并且实际上,它得到的速度很快:

  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()));
  }

这仅仅是对任何索引迭代器持有的内部节点指针的重新包装。

于 2013-12-10T13:23:30.687 回答