C++ iostream 迭代器
来源:互联网 发布:单桂敏淘宝店铺 编辑:程序博客网 时间:2024/06/16 12:53
1、流迭代器将它们对应的流当作一个特定类型的元素序列来处理。通过使用流迭代器,我们可以用泛型算法从流对象读取数据以及向其写入数据。当创建一个流迭代器时,必须指定迭代器将要读写的对象类型。
2、istream_iterator
2.1、尾后迭代器
当我们默认初始化输入流迭代器时,就创建了一个可以当作尾后值使用的空的流迭代器,从而可以当作尾后迭代器来使用,对于一个绑定到流的迭代器,一旦其关联的流遇到文件尾或遇到 IO 错误,迭代器的值就与尾后迭代器相等。
2.2、输入流迭代器支持自增运算符 ++it,it++ 使用元素类型所定义的 >> 运算符从输入流中读取下一个值。与以往一样,前置版本返回一个指向递增后迭代器的引用,后置版本返回旧值。当然流迭代器是不支持自减运算符的,道理你懂。
2.3、实例演示(istream_iterator)
2.3.1、从流迭代器范围构造 vector
#include <iostream>#include <iterator>#include <vector>using namespace std;int main(void){istream_iterator<int> in(cin),eof;vector<int> vi(in, eof);for (int i : vi) {cout << i << ends;}}
输入1 2 3 4 e(流遇到e时出现io错误,迭代器与尾后迭代器相等)
输出1 2 3 4
2.3.2、算法操作流迭代器
#include <iostream>#include <iterator>#include <numeric>using namespace std;int main(void){istream_iterator<int> in(cin),eof;cout << accumulate(in, eof,0) << endl;}1 2 3 e
6
请按任意键继续. . .
3、ostream_iterator
3.1、我们可以对任何具有输出运算符 << 的类型定义 ostream_iterator。当创建一个 ostream_iterator 时,我们可以提供(可选的)第二参数,它是一个字符串,在输出每个元素后都会打印此字符串。此字符串必须是一个C风格字符串(即,一个字符串字面常量或者一个指向以空字符结尾的字符数组的指针)。必须将 ostream_iterator 绑定到一个指定的流,不允许空的或表示尾后位置的 ostream_iterator。
3.2、输出流迭代器存在解引用(*)自增减(++ --)运算符,但没有任何作用,每个运算符都返回它本身
3.3、实例演示(ostream_iterator)
3.3.1、
#include <iostream>#include <iterator>#include <vector>using namespace std;int main(void){ ostream_iterator<int> out(cout," "); vector<int> vi{ 1,2,3,4 }; for (int i : vi) { *out++ = i; } cout << endl;}1 2 3 4
请按任意键继续. . .
第10行中 * 和 ++ 对流迭代器无影响,《C++primer 5th》推荐上述写法,这样写与其他迭代器的使用保持一致,如果想改为操作其他迭代器类型,也容易修改,并且对于读者来说此写法也更清晰。
3.3.2、copy打印vec中的元素
#include <iostream>#include <iterator>#include <vector>using namespace std;int main(void){ostream_iterator<int> out(cout," ");vector<int> vi{ 1,2,3,4 };copy(vi.cbegin(), vi.cend(), out);cout << endl;}1 2 3 4
请按任意键继续. . .
- iostream迭代器
- iostream 迭代器
- iostream迭代器
- iostream迭代器
- iostream迭代器
- C++--iostream之一
- C++:输入输出iostream
- c++namespace于iostream
- C++primer_泛型算法-插入迭代器和iostream迭代器
- 【C++】iostream, fstream, stringstream知识
- C++ iostream 迭代器 STL
- C++ iostream迭代器简介
- 流迭代器iostream迭代器
- iostream迭代器的使用
- C++ iostream迭代器简介
- C++ iostream 迭代器
- C++使用iostream迭代器
- C++ iostream迭代器
- java数组
- 一个简单的redis性能测试程序和性能测试结果
- yii2读写分离配置
- redis里能不能针对set数据的每个member设置过期时间?
- date命令
- C++ iostream 迭代器
- spl应用场景 -- IteratorIterator迭代器
- java集合类深入分析之TreeMap/TreeSet篇
- Ext JS - 日期及格式转换
- Android Handler机制初探
- session入mysql
- HashMap源码深入解析
- QT 控件示例收集
- Android滑动选择控件 WheelView