乍看来,迭代器似乎很直观。但凑近了看,你会发现标准STL容器提供了四种不同的迭代器:iterator、const_iterator、reverse_iterator和const_reverse_iterator。很快你会注意到在这四种类型中,容器的insert和erase的某些形式只接受其中一种。那是问题的开始。为什么有四种迭代器?它们之间的关系是什么?它们可以互相转化吗?在调用算法和STL实用函数时不同类型可以混合使用吗?这些类型是怎么关联到容器和它们的成员函数的?
本章回答了这些问题,也介绍了一个比通常更值得注意的迭代器类型:istreambuf_iterator。如果你喜欢STL,但你不喜欢读取字符流时istream_iterator的性能,istreambuf_iterator可能就是你正在寻找的工具。