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数据的输出

  运行结果图:

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

 

posted @ 2015-08-17 17:34  ljj江江  阅读(1051)  评论(0编辑  收藏  举报