Даже после изучения примеров у меня возникают проблемы с выяснением, как извлечь диапазоны с помощью составного ключа в контейнере MultiIndex.
typedef multi_index_container<
boost::shared_ptr< Host >,
indexed_by<
hashed_unique< const_mem_fun<Host,int,&Host::getID> >, // ID index
ordered_non_unique< const_mem_fun<Host,int,&Host::getAgeInY> >, // Age index
ordered_non_unique< const_mem_fun<Host,int,&Host::getHousehold> >, // Household index
ordered_non_unique< // Age & eligibility status index
composite_key<
Host,
const_mem_fun<Host,int,&Host::getAgeInY>,
const_mem_fun<Host,bool,&Host::isPaired>
>
>
> // end indexed_by
> HostContainer;
Моя цель - получить итератор, указывающий на первый из подмножества элементов в HostContainer hmap
, который имеет возраст partnerAge
и возвращает false
в Host::isPaired()
:
std::pair< hmap::iterator,hmap::iterator > pit = hmap.equal_range(boost::make_tuple( partnerAge, false ) );
Я думаю, что это очень неправильно.
- Как / Где мне указать индекс итератора (который должен быть равен 3 для возраста и права)?Я включу другие составные ключи в будущем.
- Что именно представляют собой два итератора в
std::pair
?(Я копирую синтаксис из примера, который я не понимаю.) - В идеале я бы использовал
std::count
, чтобы вычислить число элементов возраста partnerAge
, которые имеют право (верните false
в Host::isPaired()
).Каков синтаксис для извлечения отсортированного индекса, который отвечает этим требованиям?
Я, очевидно, все еще изучаю синтаксис C ++.Заранее спасибо за любую помощь.