c++11STL之容器

容器

首先看一下容器在STL中的位置:
转载自王桂林STL文档 可以看到,容器是STL中很重要的一部分。从字面意思理解,容器就是存贮东西的地方。
容器是存贮数据的地方,在泛型的基础上,设计的用于数据存贮、运算、表示的模型,称之为容器。

容器的特点之内存托管

语言的发展历史从c到c++到java到python,其中有一个不同就是内存的管理机制。
在c中,内存需要手动申请,手动释放。就是需要吃完饭自己洗碗。python是吃完饭不要自己洗碗。这就是内存托管。
容器采用了内存的托管机制,也就是说,放入容器中的对象,对象内存由容器来统一管理,我们只需要使用容器即可。
但如果托管的是指针,容器只负责,指针本身的内存大小,而其指向的空间还要作单独处理。

容器的分类

容器的分类是根据底层的数据结构来进行划分的
转载自王桂林STL文档容器主要分为四类:
1.有序容器sequence containers
2.关联容器associative containers
3.无序容器 unordered containers
4.容器适配器 container adapter
但是图中没有体现出第四种容器,容器适配器,这是因为容器适配器没有单独的内存模型,容器适配器是基于以上容器形成的。
容器适配器有三种:stack,queue,priority_queue ,其中stack和queue是基于deque实现的,priority_queue是基于vector实现的。
为什么需要容器适配器呢,比如vector是一个牛刀,现在要杀一只鸡,用牛刀太浪费了,所以priority_queue出现了,它就是一个鸡刀,用来杀鸡,省力而且顺手。

容器的适用场景

vectordequelistsetmulitsetmapmulitmap
内部结构dynamic arrayarray of arraysdouble linked listbinary treebinary treebinary treebinary tree
随机存取是(通过key)
搜索速度很慢
快速插入移除尾部首尾任何位置----
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值