第十五篇:流迭代器 + 算法灵活控制IO流

前言

       标准算法配合迭代器使用太美妙了,使我们对容器(数据)的处理更加得心应手。那么,能不能对IO流也使用标准算法呢?有人认为不能,他们说因为IO流不是容器,没有迭代器,故无法使用标准算法。他们错了,错在IO流确实不是容器,但它能绑定一种特殊的迭代器,叫做流迭代器。一些算法能以流迭代器为参数,对IO流进行控制。

一个经典的编程问题

  从标准输入读取一些数,再将读取的不重复的数写到标准输出。

使用流迭代器巧妙解决掉上述问题

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 // 使用非标准的迭代器都要包含这个头文件
 5 #include <iterator>
 6 
 7 using namespace std;
 8 
 9 int main()
10 {
11     /*
12      * 定义输入流迭代器
13      * 只有键入ctrl+d结束输入后,后两句方可执行。
14     */
15     istream_iterator<int> cin_it(cin);
16     // 定义输入流迭代器时如果没有给参数,那么默认迭代器指向刚超出末端的位置。
17     istream_iterator<int> eof;
18 
19     // 输入流迭代器作为参数给vector容器赋值
20     vector<int> vec(cin_it, eof);
21 
22     // 对vec容器元素进行排序
23     sort(vec.begin(), vec.end());
24 
25     // 创建输出流迭代器
26     ostream_iterator<int> output(cout, " | ");
27 
28     cout << endl;
29     // 将vec容器内容复制到输出流
30     unique_copy(vec.begin(), vec.end(), output);
31 
32     cout << endl;
33     
34     return 0;
35 }

       运行结果:

       

转载于:https://www.cnblogs.com/muchen/p/6352177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值