我有一个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)
}
答案 0 :(得分:2)
使用c ++ 11相当容易。只需使用:
<mat-tab-link>
编译器将找出auto x_itr = my_table.get_index(y).find(x)
的类型。