我有一个有多个索引的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)
}
带有C 11的
很容易。只是使用:
auto x_itr = my_table.get_index(y).find(x)
编译器将找出x_itr
的类型。