2

私が次のものを持っているとしましょう:

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"));

これにより、各イテレータが「01/15/65」に生まれた「Bob」という名前の人物を指すイテレータ範囲が得られます。

「Bob」という名前のコンテナ内のすべての人に「 01/01/65」と「01/31/65」の間に生まれたイテレータ範囲が必要な場合はどうなりますか?これは事実上「ボブ」ではequal_rangeですが、誕生日では下限と上限です。これは可能ですか?もしそうなら、どのように説明してください?

ありがとう!

4

1 に答える 1

3

必要な範囲は[ lower_bound(make_tuple("Bob","01/01/65"))upper_bound(make_tuple("Bob","01/31/65")))です。

于 2012-03-28T19:17:18.667 に答える