存储增强型multi_index索引迭代器

时间:2018-12-18 19:30:15

标签: c++ boost

我有一个boost :: multi_index类,它具有多个索引。

如果我想存储一个普通的迭代器,我可以做

multi_index_table :: const_iterator x_itr == my_table.find(x);

但如果我尝试

multi_index_table :: const_iterator x_itr == my_table.get_index(y).find(x)抱怨它不是同一类型的迭代器。

我对C ++还是很陌生,来自Java背景,理想情况下,我希望某种形式的超类能够存储任何类型的迭代器(如果可能的话)。

任何指导将不胜感激!

编辑: 我基本上是想做这样的事情:

my_table.get_index(a).find(x);
x.erase<a>(x):

my_table.get_index(b).find(y);
    x.erase<b>(y):   

template<uint64_t Index>
template<typename Iterator>  
Iterator erase(Iterator itr){
  my_table.get_index<Index>().erase(itr)
}

1 个答案:

答案 0 :(得分:2)

使用c ++ 11相当容易。只需使用:

<mat-tab-link>

编译器将找出auto x_itr = my_table.get_index(y).find(x) 的类型。