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 }

      运行结果:

      

  • 相关阅读:
    json的序列化 与 反序列化
    苹果审核被拒 2.3.10
    iOS基础问答面试
    论坛类应用双Tableview翻页效果实现
    iOS性能调优之Analyze静态分析
    win10 U盘安装ubuntu16.04双系统
    spring boot实战读书笔记1
    使用springBoot搭建REATFul风格的web demo
    es6编写generator报错
    vue开发环境搭建win10
  • 原文地址:https://www.cnblogs.com/scut-fm/p/3226706.html
Copyright © 2011-2022 走看看