一个键上的equal_range,boost multi_index_container composite_key中另一个键的下限/上限

时间:2012-03-28 13:50:51

标签: c++ boost composite-key boost-multi-index

假设我有以下内容:

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

这会给我一个迭代器范围,其中每个迭代器指向一个名为'Bob'的人,出生于'01 / 15/65'。

如果我想要一个迭代器范围,它给了我名为'Bob'的容器中的所有人但在 '01 / 01/65'和'01 / 31/65'之间出生怎么办?这实际上是'Bob'上的equal_range,但是生日上下限。这可能吗?如果是这样,请解释一下?

谢谢!

1 个答案:

答案 0 :(得分:3)

您想要的范围是[lower_bound(make_tuple("Bob","01/01/65"))upper_bound(make_tuple("Bob","01/31/65")))。