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