我想在 boost 多索引中实现两组具有相同搜索条件但不同驱逐条件的键。假设我有两组具有相同搜索条件的数据,但一组需要 100 的 MRU(最近使用)列表,另一组需要 200 的 MRU。假设条目是这样的
class Student
{
int student_no;
char sex;
std::string address;
};
搜索条件是 student_no,但是对于 sex='m',我们需要 200 的 MRU,对于 sex='f',我们需要 100 的 MRU。现在我有一个解决方案,其中我引入了一个新的有序索引来维护排序.
例如 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 为它取一个 equal_range 并删除最旧的一个,如果有东西被重新使用,我必须通过增加计数器来更新它。
这类问题有更好的解决方案吗?
谢谢,戈库尔。