C++ Primer 笔记——迭代器

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;
原文地址:https://www.cnblogs.com/zoneofmine/p/7262913.html