我有一个名为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’)
答案 0 :(得分:7)
这是因为std::map
迭代器是BidirectionalIterators而不是RandomAccessIterators - 因此支持operator++
和operator--
但不支持operator+=
和operator-=
。
请改用std::advance(start, 5)
(请注意,这会导致重复调用operator++
)。