Ben bir demet depolamak ediyorumBoost çoklu dizin yineleyicisinden sayısal dizin alın
struct Article {
std::string title;
unsigned db_id; // id field in MediaWiki database dump
};
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;
Şimdi iki yineleyicinızı, index<by_title>
itibaren bir ve index<by_id>
itibaren bir var olarak tanımlanan bir Boost.MultiIndex konteyner, aşağıdaki. Bir veri elemanı struct Article
için eklemeden, kabın rasgele erişim parçası haline endeksler bu dönüştürmek için en kolay yolu nedir?
Yani 'iterator_to (* o)' Bana bir rasgele erişim yineleyici vermelidir: aşağıdaki gibi
project
kullanabilirsiniz? Ve bunu sayısal bir dizine nasıl dönüştürürüm, çünkü gerçekten ihtiyacım olan şey (matrisin içine indekslemek)? –@larsman - random_indexed kodunun içersine göre değerlendirildiğinde, gereksinim, böyle bir endeks üzerindeki yineleyicilerin farklılık gösterebilmesidir, yani. iter - index.begin() 'çalışması gerekir. Düzenleme konusuna bakın. –