一、插入如迭代器
1.back_inserter:创建一个使用push_back的迭代器(除了array和forward_list之外, 每个顺序容器都支持push_back)。
2.front_inserter:创建一个使用push_front的迭代器(list、forward_list、deque)。
3.inserter:创建一个使用inserter的迭代器,此函数接受第二个参数,这个参数必须是一个指向给定容器的迭代器,元素将被插入到给定迭代器所表示的元素之前.
二、iostream迭代器
1.istream_iterator:读取输入流,使用>>来读取流,因此,istream_iterator要读取的类型必须定义了输入运算符.
#include<iostream>
#include<iterator>
#include<vector>
#include<fstream>
#include<algorithm>
using namespace std;
int main()
{
vector<int> ivec;
ifstream in("11.txt");
istream_iterator<string> str_iter(in), feof;
istream_iterator<int> in_iter(cin), eof; //eof为尾后迭代器
while(in_iter != eof) //循环遍历所有输入的值
{
ivec.push_back(*in_iter++); //向ivec中写值
}
while(str_iter != feof)
{
cout << *str_iter++; //输出11.txt中的内容
}
return 0;
}
2.ostream_iterator:向一个输出流写数据。当创建一个ostream_iterator时,我们可以提供(可选的)第二参数,它是一个字符串,在输出每个元素后都会打印此字符。此字符是
一个C风格的字符串。必须将ostream_iterator绑定到一个指定的流,不允许空的或者表示尾后位置的ostream_iterator.
#include<iostream>
#include<iterator>
#include<vector>
#include<fstream>
#include<algorithm>
using namespace std;
int main()
{
vector<int> ivec;
istream_iterator<int> in_iter(cin), eof; //eof为尾后迭代器
ostream_iterator<int> out_iter(cout, " ");
while(in_iter != eof) //循环遍历所有输入的值
{
ivec.push_back(*in_iter++); //向ivec中写值
}
copy(ivec.begin(), ivec.end(), out_iter); //利用copy函数,打印ivec内容
return 0;
}
3.还可以用流迭代器操作任何定义了输入运算符(>>)的类型创建istream_iterator对象。同时,也可以为任何定义了输出运算符(<<)的类型创建ostream_iterator对象.