• STL学习篇:数据的输出


      我们都知道计算机由5个部分组成:控制器(Control)、运算器(Datapath)、 存储器(Memory)、输入(Input system) 输出(Output system)。不管是什么时候,我们都是得到相应的数据,然后输入到处理设备进行相应处理,然后输出,这其中不能缺少任何一个环节!所有现在人们提高计算机的处理速度是很重要的,那么数据的输入、输出操作也是非常重要的!这两天一直在学习STL,就给大家说一说在程序应用中,数据输出的方法,这里只是涉及一些简单的皮毛,比较简单,只是使用函数方法的实现,并没有具体去研究硬件具体怎么实现,给大家分享一下(这里都是用容器vector来举例的):

      输出数据方法一:

    1 for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
    2         cout << *iter << " ";//使用for和while可以由自己定

      可以将其写成自定义函数使用就更加好啦: 

    template <typename elementType>
    void print1(elementType elem)
    {
        //专用的输出模板函数(这里面的数据仅限那些容器,含有begin方法
        for (elementType::iterator iter = elem.begin(); iter != elem.end(); ++iter)
        {
            cout << *iter << " ";
        }
        cout << endl;
    }

      使用的时候直接这样调用就行:

    print1< vector<int> >(ivec)

      输出数据方法二:

    for_each(ivec.begin(), ivec.end(), print<int>);//print函数需要自己实现
    
    template <typename elementType>
    void print(elementType elem)
    {
        cout << elem << " ";
    }

      输出数据方法三:

    ostream_iterator<int> output(cout, " ");
        copy(ivec.begin(), ivec.end(), ostream_iterator<int>(cout, " "));

      暂时就会这些输出方法啦,后续如果学到其他,再补充!下面附全部代码及运行结果图:

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<iterator>
     4 #include<vector>
     5 
     6 
     7 template <typename elementType>
     8 void print(elementType elem)
     9 {
    10     cout << elem << " ";
    11 }
    12 
    13 template <typename elementType>
    14 void print1(elementType elem)
    15 {
    16     //专用的输出模板函数(这里面的数据仅限那些容器,含有begin方法
    17     //这里面也可以借助上面的函数print()辅助for_each来实现,比较通用
    18     for (elementType::iterator iter = elem.begin(); iter != elem.end(); ++iter)
    19     {
    20         cout << *iter << " ";
    21     }
    22     cout << endl;
    23 }
    24 
    25 using namespace std;
    26 
    27 int main()
    28 {
    29     vector<int> ivec;//定义vector类型变量
    30 
    31     //插入9个数
    32     for (int i = 1; i < 10; i++)
    33         ivec.push_back(i);
    34 
    35     cout << "开始输出数据:" << endl;
    36 
    37     cout << "方法一:直接使用遍历迭代器输出:" << endl;
    38     for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
    39         cout << *iter << " ";//使用for和while可以由自己定
    40     cout << endl;
    41 
    42 
    43     //这个也可以创建成自定义模板函数print1来输出,oop思想哈
    44     cout << "……:使用自定义函数" << endl;
    45     print1< vector<int> >(ivec);
    46     cout << endl;
    47 
    48 
    49     cout << "方法二:直接使用for_each方法输出:" << endl;
    50     for_each(ivec.begin(), ivec.end(), print<int>);
    51     cout << endl << endl;//就是使用的时候在后面补个换行比较好看一点
    52 
    53 
    54     cout << "方法三:copy方法+输出流迭代器" << endl;
    55     //创建输出流迭代器,如果无法识别该函数说明没有添加相应的迭代器文件头#include<iterator>
    56     ostream_iterator<int> output(cout, " ");
    57     copy(ivec.begin(), ivec.end(), ostream_iterator<int>(cout, " "));
    58     cout << endl;
    59 
    60     return 0;
    61 }
    STL数据的输出

      运行结果图:

      上述哪里有问题,请大家指出!谢谢啦。。。

    (*^__^*) 嘻嘻……3W,My life,My way,My style!!!
  • 相关阅读:
    eclipse版本、代号
    eclipse中jdk及编译器版本问题
    改变cmd命令行颜色
    mysql-installer-community-8.0.12.0的安装
    算法简介
    Java--将数据以文本形式导出
    安装MySQL
    网络配置
    电脑拷软件到其他设备
    探针设备
  • 原文地址:https://www.cnblogs.com/lijiangjiang/p/4737211.html
Copyright © 2020-2023  润新知