不匹配'operator + ='aka std :: _ Rb_tree_const_iterator std :: map

时间:2016-05-03 06:54:11

标签: c++ c++11

我有一个名为assets的地图从const函数返回,我使用const_iterator来获取地图的子集,如下所示:

std::map<int, Asset>::const_iterator start = assets.begin();
start += 5;
......

但是我收到了错误:error: no match for ‘operator+=’ (operand types are ‘std::map<int, Asset>::const_iterator {aka std::_Rb_tree_const_iterator<std::pair<const int, Asset> >}’ and ‘int’)

1 个答案:

答案 0 :(得分:7)

这是因为std::map迭代器是BidirectionalIterators而不是RandomAccessIterators - 因此支持operator++operator--但不支持operator+=operator-=

请改用std::advance(start, 5)(请注意,这会导致重复调用operator++)。

相关问题