五种迭代器类型

  1. 输入迭代器:
    对一个序列的元素提供了顺序只读访问操作的迭代器应该支持++(前缀或后缀)、==、!=、以及一元*运算符。
    还应该支持iter->member和(*iter).member。
  2. 输出迭代器:
    支持++(前缀和后缀)、支持*it=value
  3. 正向迭代器:
    支持*it(对于读和写)、++it和it++(但不用支持–it和it–)、it==j和it!=j(it和j的类型相同)、it->member(作为(*it).member的一个替代名)。
    例如库中的replace使用>了正向迭代器
  4. 双向迭代器:
    满足正向迭代器的所有操作,且支持–(前缀和后缀)。
    例如库中的reverse算法就使用了双向迭代器。
  5. 随机访问迭代器:
    满足双向迭代器的所有操作,且支持算数运算能力。