我存储了一堆以下获取与Boost多指标的迭代器
struct Article {
std::string title;
unsigned db_id; // id field in MediaWiki database dump
};
在Boost.MultiIndex的容器,定义为
typedef boost::multi_index_container<
Article,
indexed_by<
random_access<>,
hashed_unique<tag<by_db_id>,
member<Article, unsigned, &Article::db_id> >,
hashed_unique<tag<by_title>,
member<Article, std::string, &Article::title> >
>
> ArticleSet;
现在我有两个数字索引迭代器,一个来自index<by_title>
,另一个来自index<by_id>
。将这些索引转换为容器的随机访问部分的最简单方法是什么,而不向struct Article
添加数据成员?
所以'iterator_to(* it)'应该给我一个随机访问迭代器?我该如何将它转换为数字索引,因为这就是我真正需要的(将索引到矩阵中)? – 2010-11-18 18:06:55
@larsman - 根据random_indexed代码的内部判断,要求是这样的索引上的迭代器是可区分的,即。 'iter - index.begin()'应该工作。请参阅编辑。 – 2010-11-18 18:11:37