C++容器基本介绍

C++中的容器

  • stl库中有许多十分常用的容器

顺序性容器

vector
  • vector是动态数组,在内存中有连续的存储空间,因此可以快速随机访问,但是插入和删除的效率比较慢,vector会初始化一个capacity,如果size大于等于这个值的时候,就会重新申请一份连续的内存空间,其大小是目前连续空间的2倍。这种方式性能消耗较大。
  • vector有一个clear函数,用于清空数组,但是这只是将vector的size设置为0,其vector中的元素在内存中并未被删除,因此vector在使用的过程中,内存消耗会越来越多。可以采用swap的方法来防止内存泄露的问题,即将当前的vector与临时对象进行交换,之后临时对象会自动释放内存。
  • vector是应用最为广泛的容器,如果不确定需要使用哪种容器,可以先使用vector进行尝试
list
  • list是双向链表,它的内存空间是不连续的,通过指针来进行数据的访问,因此在随机存储过程中,显得十分低效;但是它可以很高效地进行任意位置元素的插入与删除
  • list没有实现[]操作符的重载(毕竟内存空间不连续)

deque

  • deque支持快速随机访问,这点与vector相似,但是vector只在末端插入数据时十分高效,而deque支持高效地在双端插入数据,deque的重新分配速度比vector要快

关联性容器

set与map
  • set中的元素都是唯一的,map用唯一的关键字来映射对应的值,具有kay-value的功能。
  • set与map的底层都是采用红黑树实现的,插入与删除操作时仅移动指针即可,效率很高,
  • set中不能直接改变元素值,要改变元素值,必须首先删除旧元素,再插入新元素
  • 因为set与map都是使用红黑树实现的,因此其占用的内存空间较大。

另外两种关联性容器

unordered_set与unordered_map
  • 两者也是只能存储唯一的值与或者key,它们都是无序的,内部实现了哈希表,因此查找速度非常快( O(1) O ( 1 ) )。但是缺点是哈希表的建立比较耗费时间。

容器适配器

queue
  • queue是队列,先入先出,是在deque的基础上进行封装的
stack
  • stack是栈,先入后出,也是在deque的基础上进行封装的。

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littletomatodonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值