最終更新日時(UTC):
が更新

履歴 編集

class
<iterator>

std::iterator tag

namespace std {
  struct input_iterator_tag { };
  struct output_iterator_tag { };
  struct forward_iterator_tag : public input_iterator_tag { };
  struct bidirectional_iterator_tag : public forward_iterator_tag { };
  struct random_access_iterator_tag : public bidirectional_iterator_tag { };
  struct contiguous_iterator_tag: public random_access_iterator_tag { };  // C++20から
}

概要

<iterator>ヘッダでは、イテレータを分類するためのタグ(空クラス)を定義している。

説明 対応バージョン
input_iterator_tag 入力イテレータ
output_iterator_tag 出力イテレータ
forward_iterator_tag 前方向イテレータ
bidirectional_iterator_tag 双方向イテレータ
random_access_iterator_tag ランダムアクセスイテレータ
contiguous_iterator_tag 隣接イテレータ C++20

イテレータの関係性の定義に従い、これらのクラスは継承関係を持っている。

これらのタグは、コンパイル時にイテレータの分類を判定し、イテレータごとの最適な実装を選択するために使用される。

使用例は、distance()関数の実装例を参照。