STL-容器

标准STL容器:
顺序容器:vector、string、deque、list
关联容器:set、multiset、map、multimap
非标准容器:
顺序容器:slist、rop
关联容器:hash_set、hash_multiset、hash_map、hash_multimap
标准的非STL容器:
数组、bitset、valarray、stack、queue、priority_queue
各种容器的实现机理:
一、vector
vector容器分配的是一块连续的内存空间,三个指针_First,_Last,_End分别指向第一个元素、最后一个元素、当前存储区的末尾位置。
当当前存储区不够时,vector采用的策略是重新开辟一段更大的内存,并将当前容器中的内容拷贝过去。
成员:
back()     //最后一个元素的引用
begin()    //第一个元素的迭代器
end()      //最后一个元素的下一个位置的迭代器
capacity() //_End-_First    容量
size()     //_Last-_First   元素个数
特点:
可以随机访问,push_back,pop_back,单一进入
二、list双向循环链表
不可以随机访问,push_back,pop_back,push_front,pop_front,双进双出
三、deque
以损失效率为代价,提供了比vector更方便强大的线性容器,比vector的性能差几个数量级
它的内存并不是连续的,只是让用户感觉到它是连续存储的。
stack与queue都是建立在deque上的
提供双进双出、操作方便、功能强大、效率低下,万不得已不可使用。
三、stack、queue、priority_queue
stack与queue是基于deque的
priority_queue是基于vector的
stack只有pop与push等简单操作,不允许遍历
deque只允许在顶与底进行操作,不允许遍历
priority_queue带权队列
四、关联容器
set与map均采用红黑树实现
set键值相同,要求元素惟一
如果插入一个相同的元素,将插入失败,不可以用下标访问
map拥有键和值,键要求惟一
可以通过下标访问,但如果键不存在,将会新建一个元素,并返回end
multiset、multimap除了允许多个元素重复外,其他的与上面的相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值