STL在C++中算是相当简洁方便的东西了,但不知为何网上的教程都非常难,给新手入门造成了非常多的困扰。在此写篇新手入门教程。阅读此文需要有一定的C/C++基础,比如你要会用C语言的数组、链表等,会用C++类并且有一定了解等等,不会的还是别看了,就算你会用STL你也会发现有各种各样的bug。
本篇只介绍STL最基础的部分,其他的调用方式等等都差不多了。本篇不会讲解太多,具体需要自己去研究进入正题
(1) vector
很神奇的一个词汇,翻译成汉语是“向量”,其实,这就是一个C++类,用于实现边长数组的功能。特性:一个vector只能存储一种数据类型,不能像VB那样屌。
#include <vector> using namespace std;使用vector前需要在代码前面加上上面两句,用于引入vector库。
vector<int> v;定义完毕之后,向数组中插入数据
v.resize(3); v[0] = 1; v[1] = 4; v[2] = 3;分配三个存储空间,然后对其进行赋值。上面体现了一个数组的特性,但还没体现动态数组吧。下面介绍数组的动态扩展。
v.push_back(2);这句话的意思是再向数组末尾插入 2 这个数据。数组的长度为3,当长度不足时,vector将会自动扩展空间。
(2)遍历
for (std::vector<int>::iterator i = v.begin(); i != v.end(); i++) { cout << *i << endl; }上面代码就是遍历并打印数据了。可以看到打印结果为 1 4 3 2
(3)简要概况
stl集合了边长数组、链表、队列、图、哈希表等等一大堆常用数据结构,且使用的最优算法。
避免低效事件,比如在数组开始地方或中间插入元素,这几乎将要移动整个数组。如果确实有需要,可以考虑使用双端队列。
[]索引为了效率不会有错误判断,如果有需要,使用at()索引。
STL还封装了常用算法,引入 #include <algorithm> 头文件,可以使用sort排序函数等函数,支持默认排序以及自定义排序
v.capacity()为占用空间大小,为避免过多内存切换,调用v.clear()并不会真正释放空间。只有在析构和swap时才会释放空间。
懂了以上知识后,深入掌握STL就容易了。
C++中Standard Template Library(STL)入门简要概况
原文地址:http://blog.csdn.net/fawdlstty/article/details/46288171