C++ Primer 笔记——迭代器

痴心易碎 提交于 2019-12-27 03:10:32

iostream迭代器

1.虽然iostream类不是容器,但是标准库定义了可以用于IO的迭代器。创建一个流迭代器的时候必须指定要读写的类型。我们可以对任何具有输入运算符(>>)的类型定义ostream_iterator。

std::istream_iterator<int> iter_eof;            // 尾后迭代器
std::istream_iterator<int> iter_in(std::cin);    // 从cin读取int
std::vector<int> vec;

while (iter_in != iter_eof)            // 当有数据可以读取时
    vec.push_back(*iter_in++);


2.当我们将一个istream_iterator绑定到一个流时,标准库并不保证迭代器立即从流读取数据,标准库保证的是在我们第一次解引用迭代器之前,从流中读取数据的操作已经完成。

 

3.我们可以对任何具有输出运算符(<<)的类型定义ostream_iterator。必须将ostream_iterator绑定到一个指定的流,不允许空的或表示尾后位置的ostream_iterator。

std::ostream_iterator<int> iter_out(std::cout," ");    // 每个数据输出后都输出一个空格
std::vector<int> vec = {1, 3, 5};
for (auto i : vec)
    *iter_out++ = i;    // i被写入到cout中

for (auto i : vec)
    iter_out = i;    // 此语句和上面等价,因为*和++实际上不对iter_out做任何事情

std::cout << std::endl;

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!