再探迭代器(插入迭代器、流迭代器、反向迭代器、移动迭代器)
除了为每个容器定义的迭代器之外,标准库在头文件iterator中还定义了额外几种迭代器。这些迭代器包括以下几种。 插入迭代器:这些迭代器被绑定到一个容器上,可用来向容器插入元素 流迭代器:这些迭代器被绑定到输入或输出上,可用来遍历所有关联的IO流 反向迭代器:这些迭代器向后而不是向前移动。除了forward_list之外的标准库容器都有反向迭代器 移动迭代器:这些专用的迭代器不是拷贝其中的元素,而是移动它们。 1 插入迭代器 插入器是一种迭代器适配器,它接受一个容器,生成一个迭代器,能实现向给定容器添加元素。当我们通过一个迭代器进行赋值时,该迭代器调用容器操作来向给定容器的指定位置插入一个元素。下表列出了这种迭代器支持的操作。 插入迭代器操作 it=t 在it指定的当前位置插入值t。假定c是it绑定的容器,依赖于插入迭代器的不同种类,此赋值分别调用c.push_back(t)、c.push_front(t)或c.insert(t,p),其中p为传递给inserter的迭 代器位置 *it,++it,it++ 这些操作虽然存在,但不会对it做任何事情。每个操作都返回it 插入迭代器有三种类型,差异在于元素插入的位置: back_inserter创建一个使用push_back的迭代器 front