) нет необходимости определять это. Это довольно распространенная идиома для типов тегов

аюсь запросить результаты из контейнера индекса MultiIndex, где тип значения представляет собой структуру из трех элементов. Дается и первое значение, но второе и третье должны быть больше или меньше параметра запроса.

После поиска я обнаружил, что должен быть реализован пользовательский экстрактор ключей, и некоторые ссылки здесь предлагают то же самое, но я не могу его реализовать:

boost :: multi_index определяемый пользователем экстрактор ключей и составной ключhttps://www.boost.org/doc/libs/1_62_0/libs/multi_index/test/test_composite_key.cpp

Может кто-нибудь помочь мне заставить его работать?

Ниже моя структура и мультииндексная реализация:

#define RANKFILTERVIEW 0

struct TPQ {
    int UID;
    int Value;
    int Rank;
    TPQ():UID(0),Value(0),Rank(0)
    { }
    TPQ(int _T, int _V, int _R):UID(_T),Value(_V),Rank(_R)
    { }
};

typedef bip::allocator<
    TPQ,bip::managed_shared_memory::segment_manager
> shared_struct_allocator;

typedef bmi::multi_index_container<
    TPQ,
    bmi::indexed_by<
        bmi::ordered_unique<bmi::tag<struct Composite>,
            bmi::composite_key<TPQ,
                bmi::member<TPQ, int,&TPQ::UID>,
                bmi::member<TPQ, int,&TPQ::Value>,
                bmi::member<TPQ, int,&TPQ::Rank>
        > >
    >,
    shared_struct_allocator
> Rank_Set;

typedef nth_index<Rank_Set, RANKFILTERVIEW>::type Rank_view;

int main()
{
    bip::managed_shared_memory segment(bip::open_only,"RANKSOTRE");

    int UID =52478;

    std::pair<Rank_Set*, std::size_t> RankOrderRecord=segment.find<Rank_Set>("RANKDATARECORD");

    /// Here I want the result as stated below.
    auto range = RankOrderRecord.first->get<Composite>().equal_range(boost::make_tuple(UID,_2>500,_3>5));

}

У меня есть набор инструкций, которые сортировка или перестановка должны игнорироваться.

Ответы на вопрос(1)

Ваш ответ на вопрос