Я хочу внедрить внутри буста многоиндексные два набора ключей с одинаковыми критериями поиска, но разными критериями выселения.Скажем, у меня есть два набора данных с одинаковыми условиями поиска, но одному набору необходим список 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 и удалитьсамый старый, и если что-то снова используется, я должен обновить его, увеличив счетчик.
Есть ли лучшее решение для такого рода проблем?
Спасибо, Гокул.