2016-05-03 12 views
1

STD別名「+ =演算子」の一致なし:: _ Rb_tree_const_iteratorのstd ::私は<code>assets</code>と呼ばれるマップは、私はこのようなマップのサブセットを取得するためにconst_iteratorのを使用し、constの関数から戻ってきたマップ

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

重複は約 'std :: list'ですが、問題はまったく同じです:' std :: map'はこの型の算術演算をサポートしていない双方向演算子を持っています。一度に1歩ずつ増やす必要があります。 – juanchopanza

答えて

6

これはstd::mapイテレータはBidirectionalIterators、ないRandomAccessIteratorsあるためである - ので、operator++operator--ではなくoperator+=operator-=をサポートしています。

代わりにstd::advance(start, 5)を使用してください(この結果、operator++の呼び出しが繰り返されることに注意してください)。

関連する問題