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

  运行结果图:

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

时间: 2024-11-05 16:41:26

STL学习篇:数据的输出的相关文章

STL学习篇:“投机取巧”地学习

这两天一直在学习STL,先大致说一下我的学习的方法:最初是大致看一遍STL的初级入门书,然后再过一遍网上大牛讲的视频,一边跟着操作,不懂的一般就在网上一直找!看看大牛发的帖子!基本学习方法就是这样啦,总的来说谁也不可能避免实际操作这一环节,因为我们都是要学以致用的!也许有人学习新知识比较快,可以不看视频之类的,这个我只想说自己根据自己的情况来定吧!不瞎扯啦,我也只只是一个小小的初学者,就说说这两天碰到的问题吧! 大牛的视频中,每次都是要包含需要的头文件,然后就是选择合适的容器,进行初始化,输出,

STL学习篇:初始了解

先说说,为什么突然对STL感兴趣拉吧,早就发现这个神奇而又令人惊叹的知识啦!学会了解使用它,编写代码方便,思路清晰,对一些算法性的东西要求也不是很深,就像去用它,而不是我想使用树的结构时候,还需要自己去重新想再去写,表示学过一段时间,一时半会不看书,感觉写不出来,主要还是功夫不到家!但是就是因为任性,也想去学它,所以果断开始啦! STL(Standard Template Library),即标准模板库,包含了大量数据结构和算法的部件等的运行库!有了它,我们可以很快的开发C++程序,实现自己想实

STL学习篇:vector的简单使用

vector,一个动态数组!在堆中操作,元素连续存放,可以直接访问其中的任何元素,初始分配有内存,当保留内存不够的时候,会再分配内存! 下面看一个vector的构造函数例子: 1 #include <iostream> 2 #include<vector> 3 #include<string> 4 5 int main() 6 { 7 using namespace std; 8 9 //类模板,模板参数 10 vector<int> ivec;//保存in

STL学习_配接器篇

STL学习_配接器篇 定义 配接器(Adapter)在STL组件的灵活组合运用功能上,扮演着轴承.转换器的角色.它事实上是一种设计模式.即将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes,可以一起运作. 分类 STL所提供的各种适配器中,改变仿函数(functors)接口者,称为function adapter:改变容器(containers)接口者,称为container adapter:改变迭代器(iterators)接口者,称为iterato

STL学习——Vector篇

STL学习--Vector篇 vector简介 vector的数据安排及操作方式与array非常相似,两者的区别在于空间运用的灵活性.array是静态空间,一旦配置了,就不能改变:要换个大(或小)一点的可以,但琐碎的事由客户端完成:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的空间释还给系统.而vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素.它对内存的合理利用和灵活运用有很大的帮助. vector实现关键技术:对大小的控制以及重新配置时的数据移动效率

STL学习_List篇

STL学习--List篇 简介 List与Vector不同,它不使用连续空间,而是每次插入或删除一个元素,就配置或释放一个元素空间.故list对空间的使用精准,不浪费任何空间.list对任何位置的元素插入或删除,常数时间完成. List与Vector的使用,视元素的多少,元素的构造复杂度,元素存取行为的特性而定. List节点 List本身与List节点不同,List是一个双向的链表.其节点信息如下: struct _List_node_base { _List_node_base* _M_ne

STL学习——Deque篇

STL学习--Deque篇 deque概述 deque是一种双向开口的连续线性空间.双向开口指可以在头尾两端分别做元素的插入和删除操作.虽然vector也可以在头尾两端进行操作,但是其头部操作效率极差,无法被接受. deque与vector最大差异:1)deque允许于常数时间内对起头端进行元素的插入或移除操作:2)deque没有所谓的容量概念,因为它是动态地以分段连续空间组合而成,随时可以增加一段新的空间并连接起来.deque不提供所谓的空间保留功能,不存在重新配置,移动数据,释放原空间操作.

MyCat 学习笔记 第十篇.数据分片 之 ER分片

1 应用场景 这篇来说下mycat中自带的er关系分片,所谓er关系分片即可以理解为有关联关系表之间数据分片.类似于订单主表与订单详情表间的分片存储规则. 本文所说的er分片分为两种: a. 依据主键进行数据分片,验证发现主表数据保存在第1个datanode中,子表数据根据分片规则存储. b. 依据分片关键字段进行分片,验证发现主表与子表根据分片规则存储,且保存在相同的分片内. 接下来,可以下实际配置与数据验证 2 环境说明 参考  <MyCat 学习笔记>第六篇.数据分片 之 按月数据分片 

学习IOS开发UI篇--数据存储

iOS应用数据存储的常用方式 1.lXML属性列表(plist)归档 2.lPreference(偏好设置) 3.lNSKeyedArchiver归档(NSCoding) 4.lSQLite3 5.lCore Data Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在该目录 tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除.应用没有运行时,系统也可能会清除该目录下的文件.iTunes同步设备时