使用istream迭代器来输入输出数据
在C++中,很多人都会选择使用cin来进行数据的输入,使用cout来进行数据的输出,现在在C++11中我们可以使用iostream迭代器来进行这些操作,这会减少代码量,达到的效果和前面两种相同。以下是我学习中的总结,不够完善之处望指导:
使用istream_iterator来输入数据。
在我们创建一个流迭代器的时候,必须制定迭代器将要读写的对象类型。
//以下一般为数据接收的范围
istream_iterator<int> int_it(cin);//从cin读取int类型的数据
istream_iterator<int> int_oef;//尾后迭代器
下面是一个使用istream_iterator来向一个vector中写入string类型数据的例子:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
vector<string> vec;
istream_iterator<string> item_in(cin), eof;//创建istream_iterator迭代器
while (item_in != eof)//向vec中读入string数据
{
vec.push_back(*item_in++);
}
cout << "vec中的数据为:" << endl;
for (auto v : vec)
{
cout << v << " ";
}
cout << endl;
system("pause");
return 0;
}
输入:a b v s
执行结果为:a b v s
使用ostream_iterator来打印数据
这里和上面一样我们首先需要创建一个对象,即ostrean_iterator<T> out_iter(cout, " ");里面的第二个参数表示每输出一个数据后面跟上一个空格,第二个参数可以个人设置,这里是代表一下。下面是使用上面的例子和前面学习的sort()和copy(),从标准属兔读取一个整数序列,将其重新排列并将结果输出。
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
vector<int> vec;
istream_iterator<int> item_in(cin), eof;
while (item_in != eof)//使用流输入输入数据
{
vec.push_back(*item_in++);
}
cout << "vec中的数据为:" << endl;
for (auto v : vec)
{
cout << v << " ";
}
cout << endl;
//将vec中的数据按照字典的顺序进行重新排列
sort(vec.begin(), vec.end());
//定义流输出迭代器,每个数据后跟一个空格
ostream_iterator<int> out_iter(cout, " ");
//使用copy和流输出输出数据
copy(vec.cbegin(), vec.cend(), out_iter);
system("pause");
return ;
}
输入:1 2 4 3 5 7 6
执行结果为:1 2 3 4 5 6 7
从上面的两句话可以看出来,使用istream迭代器输入输出数据可以达到和cin、cout同样的效果,但是前者明显可以减少很多代码。
使用istream迭代器来输入输出数据的更多相关文章
- Kettle提高输入输出数据总结
1 mysql在数据连接是可以通过设置一下三个三处的方式 useServerPrepStmts=false useCursorFetch=true useCompression= ...
- 当使用listIterator进行迭代时候 list的迭代器可以在创建迭代器对象后 添加数据 但打印的时候不显示添加后的数据。 collection 的iterator迭代器不能添加数据 。list的对象与collection的实例对象都不能在创建迭代器后添加数据 list的迭代器保存的是循环前的数据长度
- 《C++Primer》复习——with C++11 [3]
1.我们的程序经常使用很多IO库,用来输入输出例如:istream(输入流)类型,提供输入操作. ostream(输出流)类型, 提供输出操作. cin, 一个istream对象,从标准输入读取数据. ...
- Python【第五课】迭代器,生成器,数据序列化
本节内容 列表生成式,生成器,迭代器 Json & pickle 数据序列化 1.列表生成式,生成器,迭代器 1.1 列表生成式 列表生成式?不就是生成个列表的表达式,恩~~~ 差不多. 一般 ...
- pandas小记:pandas数据输入输出
http://blog.csdn.net/pipisorry/article/details/52208727 数据输入输出 数据pickling pandas数据pickling比保存和读取csv文 ...
- 大数据学习day15----第三阶段----scala03--------1.函数(“_”的使用, 函数和方法的区别)2. 数组和集合常用的方法(迭代器,并行集合) 3. 深度理解函数 4 练习(用java实现类似Scala函数式编程的功能(不能使用Lambda表达式))
1. 函数 函数就是一个非常灵活的运算逻辑,可以灵活的将函数传入方法中,前提是方法中接收的是类型一致的函数类型 函数式编程的好处:想要做什么就调用相应的方法(fliter.map.groupBy.so ...
- CANN算子:利用迭代器高效实现Tensor数据切割分块处理
摘要:本文以Diagonal算子为例,介绍并详细讲解如何利用迭代器对n维Tensor进行基于位置坐标的大批量数据读取工作. 本文分享自华为云社区<CANN算子:利用迭代器高效实现Tensor数据 ...
- STL中,迭代器的分类
五类迭代器如下: 1.输入迭代器:只读,一次传递 为输入迭代器预定义实现只有istream_iterator和istreambuf_iterator,用于从一个输入流istream中读取.一个输 ...
- STL中的迭代器分类
STL中迭代器的分类 五类迭代器如下: 1.输入迭代器:只读,一次传递 为输入迭代器预定义实现只有istream_iterator和istreambuf_iterator,用于从一个输入流i ...
随机推荐
- java finalize方法总结、GC执行finalize的过程
注:本文的目的并不是鼓励使用finalize方法,而是大致理清其作用.问题以及GC执行finalize的过程. 1. finalize的作用 finalize()是Object的protected方法 ...
- struts2.1.8+hibernate2.5.6+spring3.0(ssh2三大框架)常见异常原因和解决方案
---------------------------------------------------------------------------------------------------- ...
- Oracle12c中性能优化&功能增强新特性之临时undo
临时表最有意思的特点之一是undo段也存储在常规undo表空间中,而它们的undo反过来被redo保护,这会导致一些问题. 1) 写undo表空间需要数据库以读写模式打开,因此,只读数据库和物理备库 ...
- Python笔记之 - 一张截图诠释"文件读写" !
Python笔记之 - 一张截图诠释"文件读写" ! 源代码如下: # 文件读写 str_test1 = "先创建txt文件再写入内容: 我是大帅哥" # wi ...
- 关于JQuery Class选择器的一点
当某个元素的Class为为两个字符串的时候,那用class选择器的时候就必须把两个字符串都写上否则无效 <div class="cla clb">11111<di ...
- Effective Java 第三版——40. 始终使用Override注解
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- JAVA 语法2
1.算术运算符 运算符 运算规则 范例 结果 + 正号 +3 3 + 加 2+3 5 + 连接字符串 "中"+"国" "中国" - 负号 i ...
- 使用Navicat连接阿里云服务器上的MySQL数据库--转
手把手教你如何正确连接阿里云服务器上的数据库: 1.首先打开Navicat,文件>新建连接>MySQL连接,其他的如一图所示. 2.因为是连接服务器上的MySQL,所以我们使用SSH连接, ...
- [ Java面试题 ] 集合篇
1.ArrayList和Vector的区别 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的 ...
- memcached安装、使用
Memcached客户端01:XMemcached 版本选择:2.0.0 XMemcached:https://github.com/killme2008/xmemcached XMemcac ...