私は書いていますiterator
(実際にはconst_iterator
現在のオブジェクト用であり、また作成したいと思いますreverse_const_iterator
。
私はこれを行う方法を確認するために周りを見回しました、そして私はこれに遭遇しました:
ただし、イテレータが逆になっている場合、逆にされたバージョンは範囲内の同じ要素を指しているのではなく、その前の要素を指していることに注意してください。これは、範囲の最後の要素を配置するためです。範囲内の最後の要素を指すイテレータは、逆にすると、最後の要素を指すように変更されます(それを超えない)。 )範囲の(逆にすると、これが範囲の最初の要素になります)。また、範囲内の最初の要素へのイテレーターが逆になっている場合、逆にされたイテレーターは最初の要素の前の要素を指します(逆にすると、これは範囲の最後の要素になります)。
これはユーザーの観点から何が起こるのでしょうか、それとも間接参照するときに、それが指していると思うreverse_iterator
オブジェクトの値/参照を与えることによってこれを抽象化しないのでしょうか?これは単なる実装の詳細ですか?
私の理解は:
for(i = obj.rbegin(); i != obj.rend(); i++)
と同等でした
for(i = obj.begin(); i != obj.end(); i++)
逆を除いて。したがって*i
、最初のケースではコンテナを逆方向に進み、2番目のケースではコンテナを順方向に進みます。私の本能は正しいですか?