C++:STL(标准模板库)

STL分为三类:algorithm(算法)、container(容器)和iterator(迭代器);

在C++标准中,STL被组织为以下13个头文件:

                     <algorithm>、<deque>、<functional>、<iterator>、<vector>向量、<list>列表、

                      <map>映射、<memory>、<numeric>、

                      <queue>双端队列、<set>集合、<stack>和<utility>

(1容器):一种存储有限集数据元素的数据结构;基本容器有7个:向量、双端队列、列表、集合、多重集、映射和多重映射

                   顺序容器:将装入其中的对象按照严格的线性形式组织起来,对其访问是顺序的,也是随机的;包括:向量、双端队列、列表。

                   关联容器:将装入其中的对象按照非线性的形式组织起来,可以根据一组索引来快速访问对象;包括:集合、多重集、映射和多重映射。

                   其中,向量、双端队列的逻辑结构相类同;

                              集合、多重集的逻辑结构相类同;

                              映射和多重映射的逻辑结构相类同;

                     向量和列表的区别是:向量用动态数组实现,而列表用链表实现的。

(1)向量(vector) 连续存储的元素<vector>

(2)列表(list)  由节点组成的双向链表,每个结点包含着一个元素<list>

(3)双队列(deque) 连续存储的指向不同元素的指针所组成的数组<deque>

(4)集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>

(5)多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>

(6)栈(stack) 后进先出的值的排列 <stack>

(7)队列(queue) 先进先出的执的排列 <queue>

(8)优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue>

(9)映射(map) {键,值}对组成的集合,以某种作用于键对上的谓词排列 <map>

(10)多重映射(multimap) 允许键对有相等的次序的映射 <map>


(2算法):100多个通用算法,被设计成函数模板,具有通用性;如find指的是查找在容器中是否存在等于某个特定值的元素;

                       sort用于对容器中的元素进行排序;

      算法部分主要由头文件<algorithm><numeric><functional>组成。


(3迭代器):没有迭代器,算法和容器无法完美结合;每个容器都是有自己的迭代器,只有容器自己才知道如何访问自己的元素。

                     可以说迭代器是一种范型指针,不仅对容器操作,而且STL算法通过迭代器对容器元素进行定位和操作的。

       迭代器部分主要由头文件<utility>,<iterator><memory>组成

<utility>是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明,

<iterator>中提供了迭代器使用的许多方法,

<memory>它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制,

<memory>中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值