2010-12-21 106 views
1

我想实现内部提升多索引两组具有相同的搜索条件,但不同的驱逐标准的关键。说我有两套与相同的搜索条件的数据,但一组需要的100 MRU(最近使用)列表,而另一组需要MRU的200说的条目是这样boost multi_index部分索引

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

的搜索标准是student_no,但对于性别='m',我们需要200的MRU和性别='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并删除最老的一个,如果事情是重新使用,我必须通过递增计数器来更新它。

有没有更好的解决这类问题的方法?

谢谢, Gokul。

+0

我在Boost ML看到了您的消息,希望您能在这里或那里找到解决方案。有趣的问题+1 – AraK 2010-12-21 20:54:16

回答

0

可以用序列代替第二个索引并保存将男性和女性拆分为缓存的迭代器。这有助于具有相同的行为。

相关问题