STL简介

1简介

STL被内建在你的 编译系统之内。STL的版本很多,常见的有HP STL、PJ STL、 SGI STL等。
在C++标准中,STL被组织为下面的13个头文件:< algorithm>、< deque>、< functional>、< iterator>、< array>、< vector>、< list>、<forward_list>、< map>、<unordered_map>、< memory>、< numeric>、< queue>、< set>、<unordered_set>、< stack>和< utility>。

2组成部分

STL可分为容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adaptors)、算法(algorithms)、仿函数(functors)六个部分。

容器(containers)

定义
容器是用来存储和组织其他对象的对象。实现链表的类就是一个容器的示例。如
vector<double> mydata;//创建存储double类型值的容器mydata
可以在容器中 存储基本类型或任何类类型的条目。如果 STL容器模板的类型实参是一个类类型,那么容器可以存储该类型的对象或者任何派生类类型的对象。通常,容器存储我们存储在其中的对象的副本,它们自动分配和管理对象占用的内存。当销毁某个容器的对象时,容器会负责销毁它包含的对象并释放它们占用的内存。使用STL容器存储对象的一个优点是我们不用费心管理它们的内存。 在实际的开发过程中, 数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对 时间要求很高的部分时,数据结构的选择就显得更加 重要。 经典的数据结构数量有限,但是我们常常重复着一些为了实现向量、链表等结构而编写的 代码,这些代码都十分相似,只是为了适应不同数据的变化而在细节上有所出入。STL容器就为我们提供了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型下的数据结构,通过设置一些模版类,STL容器对最常用的数据结构提供了支持,这些模板的参数允许我们指定容器中 元素的数据类型,可以将我们许多重复而乏味的工作简化。
STL容器类的模板
容器部分主要由头文件<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>组成。对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表 总结一下它们和相应头文件的对应关系。
数据结构 描述 实现头文件
向量(vector) 连续存储的元素 <vector>
列表(list) 由节点组成的 双向链表,每个结点包含着一个 元素<list>
双队列(deque) 连续存储的指向不同元素的指针所组成的数组 <deque>
集合(set) 由节点组成的红黑树,每个节点都包含着一个元素, <set>
节点之间以某种作用于元素对的位次排列,
没有两个不同的元素能够拥有相同的次序
多重集合(multiset) 允许存在两个次序相等的元素的 集合<set>
栈(stack) 后进先出的值的排列 <stack>
队列(queue) 先进先出的执的排列 <queue>
优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词 决定的一种队列 <queue>
映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列 <map>
多重映射(multimap) 允许键对有相等的次序的映射 <map>
为所有容器定义的操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值