2017-03-04 6 views
0

数日前にイテレータを使用し始めました。基本的なアイデアが得られたら、何かをクリアするのに役立つ必要があります。イテレータを使用してインクリメント

私はこのように書き、ほとんどの割り当てがあります帳からとイテレータについての章の最後にC++を学んでいる:

スコアは 『int型の要素を格納するベクトルである「と仮定するとは』、 (各要素をインクリメントするためのもの)次のコードスニペットで間違って何ですか?

vector<int>::iterator iter; 

for(iter =scores.begin(); iter !=scores.end(); iter++) 
{ 
    iter++; 
} 

、それはすでにでもループ内のコードなしでループのためだけ増分なっているITERイテレータは明らかです。私は私がすべきと思ったので、これを行うだけで、イテレータが参照していたベクトルの値をインクリメントします。

for(iter =scores.begin(); iter !=scores.end(); iter++) 
{ 
    *iter++; 
} 

しかし、これもエラーを返しました。だから私は考えています...イテレータを使って値を増やすことさえ可能ですか?または、コンテナ内のオブジェクトを反復処理して参照するために使用されるオブジェクトのイテレータですか?実際にその価値を変更することはできませんか?

+1

括弧を使用すると、 '(* iter)++;'を修正する必要があります。オペレータの優先順位を検索します。 –

答えて

2

変更して:C++の演算子で

for(iter =scores.begin(); iter !=scores.end(); iter++) 
{ 
    (*iter)++; 
} 

は異なる優先順位を持って、here for a tableを参照してください。

逆参照の前に後置増数値が実行されます。

関連する問題