iterator


イテレータのサポートする演算子


入力イテレータ
  コピーコンストラク
  operator=()
  operator*()
  operator++()
  operator++(int)
  operator==()
  operator!=()
  非再現性


出力イテレータ
  コピーコンストラク
  operator=()
  operator*()
  operator++()
  operator++(int)
  非再現性


前方イテレータ
  デフォルトコンストラク
  再現性


双方向イテレータ
  operator--()
  operator--(int)


ランダムアクセスイテレータ
  operator+(int)
  operator-(int)
  operator+=(int)
  operator-=(int)
  operator-(iterator)
  operator<(iterator)
  operator>(iterator)
  operator<=(iterator)
  operator>=(iterator)
  operator[](int)


# 書いてないけど上位のイテレータ演算子も.


イテレータクラスを自作する時はstd::iteratorを継承する.


template<typename ValueType>
struct my_input_iterator : std::iterator<std::input_iterator_tag, ValueType> {

};