我有一个assets从const函数返回的地图,我使用const_iterator来获取地图的子集,如下所示:
std::map<int, Asset>::const_iterator start = assets.begin();
start += 5;
......
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误: 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’)
这是因为std::map迭代器是BidirectionalIterators,不RandomAccessIterators -因此支持operator++和operator--但不operator+=和operator-=.
请std::advance(start, 5)改用(请记住,这将导致重复调用operator++).
| 归档时间: |
|
| 查看次数: |
3587 次 |
| 最近记录: |