повысить частичные индексы multi_index - PullRequest
1 голос
/ 21 декабря 2010

Я хочу внедрить внутри буста многоиндексные два набора ключей с одинаковыми критериями поиска, но разными критериями выселения.Скажем, у меня есть два набора данных с одинаковыми условиями поиска, но одному набору необходим список MRU («Последние использованные»), равный 100, а другому набору требуется MRU, равный 200. Скажем, запись выглядит так:* Критерии поиска: student_no, но для sex = 'm' нам нужно MRU 200, а для sex = 'f' нам нужно MRU 100. Теперь у меня есть решение, в котором я ввожу новый упорядоченный индекс для поддержанияordering.

Например, IndexSpecifierList будет выглядеть примерно так:

typedef multi_index_container<
  Student,
  indexed_by<
    ordered_unique< member<Student, int, &Student::student_no> >,
    ordered_unique< composite_key<
                    member<Student, char, &Student::sex>,
                    member<Student, int,  &Student::sex_specific_student_counter> > >
  > 
> student_set 

Теперь каждый раз, когда я вставляю новый, мне нужно взять для этого равный_рандж с использованием индекса 2 и удалитьсамый старый, и если что-то снова используется, я должен обновить его, увеличив счетчик.

Есть ли лучшее решение для такого рода проблем?

Спасибо, Гокул.

1 Ответ

0 голосов
/ 28 декабря 2010

Можно сделать то же самое с секвенированием вместо второго индекса и удерживанием итератора, который разделяет мужчину и женщину как кэшированный. Это помогает с тем же поведением.

...