STL详解(vector,list,deque,stack,queue,priority_queue;map,set)

STL称为C++中的标准模板库

其中包含各种容器:顺序容器,关联容器

顺序容器:vector,list, deque, stack,queue,priority_queue;

关联容器:map,set;

 

1.        顺序容器:

(1).    Vector:类似于数组,但是无需考虑内存分配,vector会随着元素的增加或减少而自动管理内存,程序员可通过reserve()成员函数进行干预来管理内存;

A.       Reserve():程序员告诉vector需要预留多少个元素的存储空间;

B.       Capacity():返回vector在需要分配更多的存储空间之前能够存储的元素个数—若不重新分配内存,当前可容纳的元素个数;

C.       Size():当前实际拥有的元素个数;

(2).    List:内部数据结构为双向环状链表,不能随机访问一个元素,但可双向遍历,且可动态地增加或减少元素,内存管理自动完成。

(3).    deque:双向开口的连续线性空间。

A.       dequeue对比vector:dequeue为双向开口的连续线性空间,vector为单向开口的连续线性空间。相对于Dequeue,vector在头部添加元素时操作效率极差!!!

B.       dequeue对比list:list是一个双向环状链表,故不能随机地访问一个元素,但dequeue是双向开口的连续线性空间。

注:vector,list,deque是基本容器,而stack,queue,priority_queue是适配器。

(4).    Stack是可将任意类型的序列容器转化为一个堆栈,但是一般使用deque作为支持的序列容器。约束:LIFO

(5).    Queue也可以将任意类型的序列容器转化为一个堆栈,但是一般使用deque作为支持的序列容器。约束:FIFO

(6).    Priority_queue可以将任意类型的容器转化为一个优先级队列,但是一般使用vector作为底层存储方式。约束:只能访问第一个元素,不能遍历整个priority_queue。第一个元素始终为优先级最高的一个元素。

 

2.        关联容器:map,set。

(1).    map:所有元素都根据元素的键值被自动排序。Map的所有元素均是pair,第一个元素为键值,第二个元素为实值。

Multimap特性与map相同,但是multimap允许键值重复。

(2).    set:所有元素都根据元素的键值自动排序。Set的元素不像map那样同时拥有键值(key)和实值(value),但是set元素的键值就是实值。Set元素不允许两个元素有相同的键值。

Multiset特性与set相同,但是multiset允许键值重复。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值