我们都知道计算机由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数据的输出
运行结果图:
上述哪里有问题,请大家指出!谢谢啦。。。
时间: 2024-11-05 16:41:26