iostream迭代器(输入输出流迭代器)

利用输入输出流迭代器操作vector

//从输入流读入int数据,存到vector中,再输出显示

#include <iostream>
#include<stdio.h>
#include<string.h>


#include<vector>
#include<iterator>


using namespace std;


void main()
{
istream_iterator<int> in_iter(cin);//从cin读取int
istream_iterator<int> eof;//尾后迭代器
vector<int> vec;


while(in_iter!=eof)
vec.push_back(*in_iter++);


/*直接用cout输出
 for(vector<int>::iterator  it=vec.begin();it!=vec.end ();it++)
cout<<*it<<" ";
*/ 

//用输出流迭代器输出
ostream_iterator<int> out_iter(cout," ");
for(vector<int>::iterator  it=vec.begin();it!=vec.end ();it++)
*out_iter++=*it;

/*
//新标准使用for输出
for(auto e:vec)
*out_iter++=e;
cout<<endl;
*/


/*使用copy到输出流迭代器输出vector元素
ostream_iterator<int> out_iter(cout," ");
copy(vec.begin(),vec.edn(),out_iter);
cout<<endl;
*/

}

使用accumulate算法操作流迭代器

//从输入流读入int数据,并输出所有输入数据的和
#include <iostream>
#include<stdio.h>
#include<string.h>


#include<vector>
#include<iterator>


#include<numeric>
using namespace std;


void main()
{
istream_iterator<int> in_iter(cin),eof;
cout<<accumulate(in_iter,eof,0)<<endl;
}

总结一下

istream_iterator的操作有:

istream_iterator<T> in(is); in从输入流is读取数据类型为T的值

istream_iterator<T> end; 读取类型为T的istream_iterator迭代器,标示尾后元素

*in 返回从流读取得数据

++in,in++  使用元素类型所定义的>>运算符从输入流中读取下一个值,前置加版本返回一个纸箱递增后迭代器的引用,后置加版本返回旧值;

ostream_iterator的操作有:

ostream_iterator<T> out(os); out将类型为T的值写入到输出流os中

ostream_iterator<T> out(os,d); out将类型为T的值写入到输出流os中,每个值后面都输出一个d,d指向一个空字符结束的数组

out=val; 用<<运算符将val写入到out所绑定的ostream,valdez类型必须与out可写的类型兼容

*out,++out,out++  不对out做任何事情,都返回out


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值