无法从boost multi_index_container ++中删除元素

时间:2019-05-15 21:15:07

标签: c++ boost multi-index boost-multi-index

基于CentOS 7,g ++ 4.8.5-28构建。语言标准:C ++ 03

工作示例:https://godbolt.org/z/ijSFrK

在方法RemoveMapping中,对mapDb.erase(clientIter);的调用失败(有关实际代码和编译错误,请参见链接中的示例代码)。我想知道是否是因为同时使用复合键和键提取器方法的多个有序索引?

1 个答案:

答案 0 :(得分:0)

而不是

mapDb.erase(clientIter);

你必须写

clientView.erase(clientIter);

请记住,每个索引(视图)都有自己的迭代器类型,并且您不能自由地互换它们。为方便起见,容器本身(此处为mapDb)的行为类似于其第一个索引(#0),因此mapDb.erase仅可以接受serverView的迭代器。