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 }
运行结果截图:
如果哪里有不对的地方,希望大家可以指出!谢谢。。。