STL学习篇:数据的输出 – ljj江江

  我们都知道计算机由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学习篇:数据的输出,转载请注明。



You must enable javascript to see captcha here!

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress

无觅相关文章插件,快速提升流量