🌊

イテレータのend()の仕様を理解する

2024/10/11に公開

目的

end()メソッドがコンテナ[1]の末尾の次の要素を表すが、末尾要素指すイテレータ[2]だと勘違いしていた。
これを忘れないように対応したい。

対応策

以下の2点を意識することで忘れにくくなると思う。

  • begin()で取得できるイテレータを最初の要素の1つ左にいるものとし、その後もイテレータも要素の区切り位置に配置していく。
  • イテレータを右を向いている人だとイメージし、最初に見つけた要素にアクセスするものとする。
    • これによって、end()で取得できるイテレータは目の前に要素が存在しないので、vectorのend()で取得したイテレータのindexでvectorをランダムアクセスすると配列外参照となる。

以下の記事の図が非常に分かりやすい。
https://betrue12.hateblo.jp/entry/2019/12/04/000146

脚注
  1. コンテナとは、配列や辞書のような値を複数入れることができるデータ構造のこと。 ↩︎

  2. イテレータとはコンテナ内での要素の位置を指すもの。 ↩︎

Discussion