boost::multi_index容器中迭代器功能投影的复杂性



有人知道boost::multi_index库中迭代器投影的复杂性吗?文档可以在这里找到迭代程序的boost::multi_index投影,但它没有说明操作的复杂性。

其基本思想是,您可以检索索引中对象的迭代器,然后将其投影到第二个索引中,并在第二个索引来获取同一对象的迭代器。如果这是一个O(1)运算,那么您可以有效地维护两个索引,一个在快速时间内可搜索,另一个较慢。据我所知,迭代器的投影使我能够在索引中找到搜索速度更快的对象,然后将其投影到搜索速度较慢的索引中。

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

非常感谢您的帮助!

正如文档中所指定的,这是一个恒定的时间,实际上,它是最快的:

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

这只是对任何索引迭代器所持有的内部节点指针的重写。

最新更新