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

时间:2013-12-09 23:58:06

标签: boost time-complexity multi-index boost-multi-index boost-iterators

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

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

我很想知道它是否是迭代器投影的简单O(1)查找,或者它是否有效地在第二个索引中启动了一个find操作,因此依赖于你投射到的特定索引并且比O(1)慢。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分: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()));
  }

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