🌊
イテレータのend()の仕様を理解する
目的
end()メソッドがコンテナ[1]の末尾の次の要素を表すが、末尾要素指すイテレータ[2]だと勘違いしていた。
これを忘れないように対応したい。
対応策
以下の2点を意識することで忘れにくくなると思う。
- begin()で取得できるイテレータを最初の要素の1つ左にいるものとし、その後もイテレータも要素の区切り位置に配置していく。
- イテレータを右を向いている人だとイメージし、最初に見つけた要素にアクセスするものとする。
- これによって、end()で取得できるイテレータは目の前に要素が存在しないので、vectorのend()で取得したイテレータのindexでvectorをランダムアクセスすると配列外参照となる。
以下の記事の図が非常に分かりやすい。
Discussion