stream iterator 是另一种迭代器适配器,这是个用来读写stream(I/O通道的对象)的迭代器,该迭代器能够从键盘中获取输入的内容,同样的,我们也可以把一个算法的输出结果重新导向到一个文件或屏幕上。具体来说,一个istream迭代器可以从input stream中读取元素,而一个ostream迭代器可以用来对output  stream写入元素。

istream迭代器

istream迭代器类对象是istream_iterator<T> 形式,istream_iterator是类模板类型,该类型利用operator >> 从input stream中读取对应的元素;为了解决读取动作失败或为读取结束产生一个结束标志位,需要产生一 个结束标志的end-of-stream 迭代器,该迭代器可由istream迭代器的默认构造函数产生。
istream_iterator<T>()                 作用: 可以产生一个end-of-stream迭代器;
istream_iterator<T>(istream)     作用:可以为istream产生一个迭代器,需要input stream作为参数,即cin;

ostream迭代器

ostream迭代器类对象是ostream_iterator<T> 形式,ostream_iterator是类模板类型,该类型利用operator << 完成“赋值”操作;

ostream_iterator<T> (ostream)              作用:为ostream产生一个ostream迭代器,需要提供output steam作为参数,即cout。
ostream_iterator<T> (ostream, delim)  作用:为ostream产生一个ostream迭代器,各个元素以delim为分隔符,delim的类型是const char *;

例子1

/************************************************************************/
//功能:从标志输入读取所有的输入文字,排序,将不重复的文件打印到屏幕
/************************************************************************/
void StreamIterator()
{vector<string> strVector;//istream_iterator 是输入流迭代器copy(istream_iterator<string>(cin), istream_iterator<string>(), back_inserter(strVector));sort(strVector.begin(), strVector.end());//类unique算法,消除毗邻的相同元素值,ostream_iterator 输出流迭代器unique_copy(strVector.begin(), strVector.end(), ostream_iterator<string>(cout, "\n"));}

含义说明:

1.istream_iterator<string>(cin)
该定义会产生一个可从“标准输入流 cin”读取数据的stream iterator,其中 模板参数string 表示steam iterator读取参数的类型,这些元素同operator >>读取进来。
2.istream_iterator<string>() 
该定义会调用istream_tream的默认构造函数,会产生一个“流结束符(end-of-steam)的迭代器”,表示读取结束的标志。
3.ostream_iterator<string>(cout, "\n")
该定义表示将算法的结果"向标准输出流cout输出数据,并且每个string元素间以换行符分隔"。

例子二

/****************************************************
*函数名称:OstreamExample
*功    能:output迭代器的用法
*作    者:Jin
*日    期:2016年5月22日
****************************************************/
void OstreamExample()
{//产生ostream迭代器,指向标准输出(屏幕)ostream_iterator<int> IntWriter(cout, " \n");*IntWriter = 42;//屏幕打印42并换行IntWriter++;*IntWriter = 77;//屏幕打印77并换行IntWriter++;*IntWriter = -5;//屏幕打印-5    并换行IntWriter++;vector<int> IntVector;for (int i = 0;i < 10; ++i){IntVector.push_back(i);}//各元素以talbe键分隔copy(IntVector.begin(), IntVector.end(), ostream_iterator<int>(cout, "\t"));//各元素以<分隔copy(IntVector.begin(), IntVector.end(), ostream_iterator<int>(cout, " < "));cout << endl;
}

转载于:https://www.cnblogs.com/jinxiang1224/p/8468423.html

Stream Iterator(流迭代器)相关推荐

  1. 怎么利用迭代器写入mysql_流迭代器实现文件操作(读取和写入)方法详解

    流迭代器并不知道底层流的特性.当然,它们只适用于文本模式,否则它们不会关心数据是什么.流迭代器可以以文本模式来读写任何类型的流.这意味着除了其他的一些流之外,我们可以用迭代器以文本模式来读和写文件.在 ...

  2. 插入迭代器、流迭代器、反向迭代器、移动迭代器

    文章目录 前言 插入迭代器 inserter front_inserter back_inserter iostream迭代器 istream_iterator 读取输入流 istream_itera ...

  3. 迭代器适配器{(插入迭代器back_insert_iterator)、IO流迭代器(istream_iterator、ostream_iterator)}...

    一.迭代器适配器 反向迭代器 插入迭代器 IO流迭代器 其中反向迭代器可以参考以前的文章. 二.插入迭代器 插入迭代器实际上是一个输出迭代器(*it=; ++) back_insert_iterato ...

  4. 《Java8实战》读书笔记06:Parallel Stream 并行流

    <Java8实战>读书笔记06:Parallel Stream 并行流 第7章 并行数据处理与性能 7.1 并行流 7.1.1 将顺序流转换为并行流 7.1.2 测量流性能 7.1.3 正 ...

  5. java双层list扁平化,浅谈java8 stream flatMap流的扁平化操作

    概念: Steam 是Java8 提出的一个新概念,不是输入输出的 Stream 流,而是一种用函数式编程方式在集合类上进行复杂操作的工具.简而言之,是以内部迭代的方式处理集合数据的操作,内部迭代可以 ...

  6. java8 —— Stream( 流 )

    文章目录 一.Stream( 流 )是什么? 二.Stream 的操作三个步骤 三.创建Stream 四.Stream 的中间操作 4.1.筛选与切片 4.2. 映射:(重点) 4.3. 排序: 五. ...

  7. 1.10 Iterator(迭代器)遍历集合元素

    Iterator(迭代器)遍历Collection集合元素 Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Ma ...

  8. Scala Iterator(迭代器)详解

    Scala Iterator(迭代器) Scala Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法. 迭代器 it 的两个基本操作是 next 和 hasNext. 调用 it.n ...

  9. Iterator(迭代器)--对象行为模式

    Iterator(迭代器)–对象行为模式 一.意图 提供一种方法顺序访问一个聚合对象的各个元素,而又不需暴露该对象的内部结构. 二.动机 1.在软件构建过程中,集合对象内部结构常常变化各异.但对于这些 ...

最新文章

  1. unity3d android 回调,大神们,请问unity和Android交互的时候,为什么总是调用不到方法...
  2. java和ffmpeg使用内存转码_FFMPEG基于内存的转码实例
  3. 华为机试支持python吗_4.10华为暑期实习生机试题目,python解答
  4. php array assoc,如何学习PHP array_intersect_assoc()
  5. ubuntu下安装php redis
  6. 如何绘制逻辑图 — 5. 要素的属性:系统与模块
  7. BZOJ5251:[九省联考2018]劈配——题解
  8. 简历人才库系统_人才招聘简历的3种选择
  9. Hadoop笔记——技术点汇总
  10. php怎么循环显示图片,thinkphp 循环显示图片问题!!!~~~~
  11. 如何求最小三元组距离
  12. 嵌入式大佬 | 嵌入式C语言知识点万字总结
  13. 微信的API到底是什么?
  14. 联合索引的最左匹配原则的成因
  15. 【办公必备软件】万彩办公大师教程丨PDF转HTML工具
  16. 【异常处理】解决Windows下access denied for user ‘root‘@‘localhost‘(using password:YES)的mysql启动问题
  17. 烽火算法针对的是什么,烽火算法对网站优化有什么好处
  18. html+写入数据库+JDBC更改数据库
  19. 专业实训---摩拜共享单车
  20. Stewart平台及其数学运算

热门文章

  1. 紫外可见分光光度计所使用的汞灯的选型
  2. 【第37天】斐波那契数列与爬楼梯 | 迭代的鼻祖,递推与记忆化
  3. 爽易购商城--后台管理
  4. 微信小程序未来走向是怎么样的?
  5. 《Python源码剖析》上架
  6. 解决webpack打包体积过大的问题
  7. .NET开源作业调度框架Quartz
  8. Vue.use 写多个_遵义写农产品商业计划书可做PPT
  9. 广西南宁青秀山45万株郁金香迎新春
  10. 如何使用JSR 303 进行后台数据校验?