zoukankan      html  css  js  c++  java
  • 第十五篇:流迭代器 + 算法灵活控制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 }

           运行结果:

           

  • 相关阅读:
    【面试题总结】第三篇
    Django 多账号登录
    Zabbix3.2 监控搭建
    2017.09.24校内训练
    2017.09.06校内训练
    tyvj P1001 第K极值
    洛谷P1020导弹拦截
    洛谷P1006传纸条
    2017.09.10校内训练
    hdu_1086 You can Solve a Geometry Problem too
  • 原文地址:https://www.cnblogs.com/muchen/p/6352177.html
Copyright © 2011-2022 走看看