码迷,mamicode.com
首页 > 编程语言 > 详细

C++中Standard Template Library(STL)入门简要概况

时间:2015-05-31 15:23:44      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:c++   stl   数据结构   

STL在C++中算是相当简洁方便的东西了,但不知为何网上的教程都非常难,给新手入门造成了非常多的困扰。在此写篇新手入门教程。阅读此文需要有一定的C/C++基础,比如你要会用C语言的数组、链表等,会用C++类并且有一定了解等等,不会的还是别看了,就算你会用STL你也会发现有各种各样的bug。

本篇只介绍STL最基础的部分,其他的调用方式等等都差不多了。本篇不会讲解太多,具体需要自己去研究进入正题

(1) vector

很神奇的一个词汇,翻译成汉语是“向量”,其实,这就是一个C++类,用于实现边长数组的功能。特性:一个vector只能存储一种数据类型,不能像VB那样屌。

#include <vector>
using namespace std;
使用vector前需要在代码前面加上上面两句,用于引入vector库。
然后定义一个可以存储int类型数据的边长数组

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
std::vector<int>::iterator这句话有点长啊,其实意思就是 std::vector<int> (数组类型)的 iterator (索引器),专门用来索引这种数组用的。v.begin()为数组v的起始位置,也就是指向数组第一个元素 0 的指针。v.end() 为数组最后一个元素的后一位,为NULL的指针,i++表示索引器向下移动一位。

(3)简要概况

stl集合了边长数组、链表、队列、图、哈希表等等一大堆常用数据结构,且使用的最优算法。

避免低效事件,比如在数组开始地方或中间插入元素,这几乎将要移动整个数组。如果确实有需要,可以考虑使用双端队列。

[]索引为了效率不会有错误判断,如果有需要,使用at()索引。

STL还封装了常用算法,引入 #include <algorithm> 头文件,可以使用sort排序函数等函数,支持默认排序以及自定义排序

v.capacity()为占用空间大小,为避免过多内存切换,调用v.clear()并不会真正释放空间。只有在析构和swap时才会释放空间。


懂了以上知识后,深入掌握STL就容易了。


C++中Standard Template Library(STL)入门简要概况

标签:c++   stl   数据结构   

原文地址:http://blog.csdn.net/fawdlstty/article/details/46288171

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!