c++ 插入迭代器

一、插入如迭代器

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对象.

猜你喜欢

转载自blog.csdn.net/kuangbao9/article/details/77968681