私はこれを行う方法を確認するために、周りを見回したと私thisに出くわし:
注意が反復子が反転するときに、反転バージョン を配置するために、これはそうである、範囲内の同じ要素に、それに先行する1 を指していないこと。過去の終わりのために 範囲の要素:それは の範囲の最後の要素を指し示すエリータは、その範囲の最後の要素( ではない)を指すように変更されます( が反転した場合、範囲の最初の要素になります)。また、範囲内の最初の要素の反復子が である場合、逆イテレータは最初の 要素の前の要素を指します(これは、 が逆転した場合、範囲の最後の要素になります)。
は、ユーザーの視点から何が起こるかこのとき、またはあなたreverse_iterator
デリファレンスそれはあなたがそれを指している思いオブジェクトの値/参照を与えることではない、この抽象化しますか?これは単なる実装の詳細ですか?
私の理解がされた:
for(i = obj.rbegin(); i != obj.rend(); i++)
は逆の場合を除き
for(i = obj.begin(); i != obj.end(); i++)
と同等でした。そして、*i
は、最初のケースではコンテナを逆戻りし、2番目のケースではコンテナを前に進めます。私の本能は正しいのですか?
それはちょうど働きます。 –
補足:イテレータを使うときは、ポストインクリメントの代わりにプリインクリメント( '++ i')を使うべきです。 –