STL学习篇:初始了解

  先说说,为什么突然对STL感兴趣拉吧,早就发现这个神奇而又令人惊叹的知识啦!学会了解使用它,编写代码方便,思路清晰,对一些算法性的东西要求也不是很深,就像去用它,而不是我想使用树的结构时候,还需要自己去重新想再去写,表示学过一段时间,一时半会不看书,感觉写不出来,主要还是功夫不到家!但是就是因为任性,也想去学它,所以果断开始啦!

  STL(Standard Template Library),即标准模板库,包含了大量数据结构和算法的部件等的运行库!有了它,我们可以很快的开发C++程序,实现自己想实现的功能,就和学类库的功能,我们知道每个包含文件功能,以及怎么灵活应用功能!比如说使用vector,常解释为向量,就可以动态增长,不像我们的数组一样还需要,重新分配空间,复制原来的数组等!非常方便实用。。。

  STL主要有容器,算法和迭代器三大部分!

  容器就是用来存储数据的,当我们需要解决上实际问题时,其中重要的步骤就是需要定义抽象数据类型等来描述我们的问题及所需要的数据,好多新原理的出现也往往是基于新概念的定义上面的!我们这里的容器就包含我们需要的好多数据结构,例如数组、链表、队列、栈、堆和树等!这些都是我们常用的数据结构,数据结构这本书详细介绍了这些数据结构常用的操作!在STL,我们只要包含了相应库文件,常用的操作比如说还是向量,需要插入数据直接使用它的push_back()方法就行,括号里面填写相应的数据!如果我们只是使用可以不必了解其到底是怎么实现的!但是还是了解一些比较好,有助于理解并灵活使用,进而努力达到设计的崇高目标!对了,忘记说一点就是这些数据结构都是带模板参数的,意思就是可以适应各种类型的数据1

  算法就是来提供一些对相应对象的增、删、改、查等操作,来实现自己的功能!

  迭代器感觉就是联系二者的纽带,相当于指针,到底怎么将相应数据和操作对应联系起来,这既是迭代器的作用!

  还有一些不得不说的就是,字符串和输入输出流等内容!这些也是STL的一部分!  

  所以,我们平时需要使用STL时,填写这几个包含文件就差不多啦:

#include<iostream>//输入输出流

#include<对应容器>//容器
#include<algorithm>//算法

#include<string.h>//字符串

根据自己的实际需求填写相应的库文件就好!下面是一个简单的c++STL程序及运行图:

 1 #include <iostream>
 2 #include<vector>
 3 #include<algorithm>
 4
 5 using namespace std;//标准命名空间
 6
 7 int main()
 8 {
 9     int a = 0;//一个变量,int类型
10     //选择一个容器,存放数据
11     vector<int> v;//一个向量v,vector<int>类型
12     v.push_back(12);
13     v.push_back(23);
14     v.push_back(2);
15     v.push_back(15);
16     v.push_back(1);
17
18     //迭代
19     vector<int>::iterator ivec = v.begin();
20     cout << "向量里面的数据是:" << endl;
21
22     while (ivec != v.end())
23     {//循坏遍历一遍
24         cout << *ivec << "\t" << endl;
25         ivec++;
26     }
27
28     //使用算法中函数查找相应元素
29     int findElement = v.at(3);//第三个元素,从0开始计数
30     vector<int>::iterator element = find(v.begin(), v.end(), findElement);
31
32     if (element != v.end())
33     {
34         int mpos = distance(v.begin(), element);
35         cout << "数据是:" << *element << "\t位置是:" << mpos << endl;
36     }
37     else
38     {
39         cout << "没有数据" << findElement << endl;
40     }
41     return 0;
42 }

SimpleSTL

运行结果截图:

如果哪里有不对的地方,希望大家可以指出!谢谢。。。

时间: 2024-07-29 00:21:23

STL学习篇:初始了解的相关文章

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

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

STL学习篇:数据的输出

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

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学习——Vector篇

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

STL学习_配接器篇

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

STL学习——Priority_queue篇

STL学习--Priority_queue篇 概述 priority_queue是一个拥有权值观念的queue,它允许加入新元素,移除旧元素,审视元素值等功能.因为它是queue,故只允许底端加入元素,顶端取出元素.priorit_queue内元素并非依照被推入的次序排列,而是依照元素权值排列.权值最高者,排在最前面. 实现 priority_queue利用max_heap和vector表现的完全二叉树实现.它的实现完全以底部容器为根据,并使用heap处理规则,故实现简单.默认情况,使用vect

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不提供所谓的空间保留功能,不存在重新配置,移动数据,释放原空间操作.

STL学习——Stack/Queue篇

STL学习--Stack/Queue篇 Stack 概述 stack是一种先进先出的数据结构,只有一个出口,stack允许新增元素,移除元素,取得最顶端元素.但除了最顶端外,没有任何办法可以存取stack其他元素.即不允许遍历行为. 实现 stack实现是以容器为底部结构的,将容器的接口改变,使其符合"先进先出"特性,便形成了一个栈.具体实现可以将底部deque的头端开口封闭,便实现了stack.因为stack具有"修改某物接口,形成另一种风貌"性质,故称为&quo