提升multi_index部分索引

时间:2010-12-21 20:26:22

标签: c++ boost multi-index

我想在内部使用相同的搜索条件但不同的驱逐标准的内部提升多索引两组密钥。假设我有两组具有相同搜索条件的数据,但是一组需要MRU(最近使用)列表100,另一组需要MRU为200.说条目是这样的

class Student
{
     int student_no;
     char sex;
     std::string address;
};

搜索条件是student_no,但是对于sex ='m',我们需要MRU为200而对于sex ='f',我们需要MRU为100.现在我有一个解决方案,其中我介绍一个新的有序索引维持订购。

例如,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并删除最旧的一个,如果某些东西被重新使用,我必须通过递增计数器来更新它。

这种问题有更好的解决方案吗?

谢谢, 戈库尔。

1 个答案:

答案 0 :(得分:0)

可以通过排序代替第二个索引并保持迭代器来进行相同操作,迭代器将男性和女性分开作为缓存。这有助于实现相同的行为。