插入迭代器
插入迭代器有三种类型:
back_inserter : 创建一个使用push_back的迭代器,总是插入到容器最后一个元素之后。
front_inserter : 创建一个使用push_front的迭代器,总是插入到容器第一个元素之前。
inserter : 创建一个使用inset的迭代器,此函数接受第二个参数,必须是一个指向给定容器的迭代器,插入到给定迭代器之前。
假定 it = inserter (c,iter) ,则
*it = val;
等同于:
it = c.insert (it ,val);
++ it ;
流迭代器
istream_iterator操作
例如从cin中读取操作。
istream_iterator <int> int_iter(cin),eof; //从cin读取int,eof为尾后迭代器
while(int_iter != eof)
vec.push_back(*in_iter++);
更简易的循环可以用构造完成
vector<int> vec(in_iter,eof);
ostream_iterator操作
用其输出值的队列。
ostream_iterator<int> out_iter(cout," "); //每次输出时后面加一个空格
for(auto e:vec)
*out_iter++=e; //赋值语句实为写出,*和++实际并不会做任何操作
可以使用copy来更简单的实现:
copy(vec.begin,vec.end,out_iter);