equal_range для одного ключа, нижняя/верхняя граница для другого в boost multi_index_containercomposite_key

Предположим, у меня есть следующее:

struct Person
{
    std::string mName;
    Birthday mBirthday;
};

using namespace boost::mult_index;
typedef multi_index_container<
    Person,
    ordered_non_unique<
        composite_key<
            Person,
            member<Person, std::string, &Person::mName>,
            member<Person, Birthday, &Person::mBirthday>
        > // composite_key
    >  // ordered_non-unique
> PersonContainer; // mult_index_container

PersonContainer personContainer;

...

std::pair<PersonContainer::iterator, PersonContainer::iterator> similarPeople
    = personContainer.equal_range(boost::make_tuple("Bob","01/15/65"));

Это дало бы мне диапазон итераторов, где каждый итератор указывал на человека по имени «Боб», родившегося «15.01.65».

Что, если я хочу, чтобы диапазон итераторов дал мне всех людей в контейнере с именем «Боб», но родившихся между «01/01/65» и «01/31/65»? По сути, это equal_range для «Боба», но нижняя и верхняя граница для дней рождения. Это возможно? Если да, то объясните как?

Спасибо!


person impulsionaudio    schedule 28.03.2012    source источник


Ответы (1)


Нужный диапазон: [lower_bound(make_tuple("Bob","01/01/65")),upper_bound(make_tuple("Bob","01/31/65"))).

person Joaquín M López Muñoz    schedule 28.03.2012