面试常考——STL篇

目录

  • 容器分类
  • vector
    • size与capacity的区别
    • 数组与vector的区别
    • 扩容机制
  • map、set与unordered_map区别

一、 容器分类

序列式容器关联式容器容器适配器
vectorsetstack
dequemultisetqueue
listmappriority_queue
-multimap-

注意:

(1) 序列式容器才可以在容器初始化的时候制定大小,关联式容器不行

(2)注意,关联容器的迭代器不支持it+n操作,仅支持it++操作

(3)优先队列与队列的差别在于优先队列不是按照入队的顺序出队,而是按

照队列中元素的优先权顺序出队

二、 vector

  1. size与capacity的区别

size是真实元素的所占的空间打开,capacity是整个可容纳的空间大小

  1. 数组与vector的区别

在这里插入图片描述

  1. 扩容机制

(1) vector在push_back以成倍增长可以在均摊后达到O(1)的事件复杂度,相对于增长指定大小的O(n)时间复杂度更好

(2) 为了防止申请内存的浪费,现在使用较多的有2倍与1.5倍的增长方式,而1.5倍的增长方式可以更好的实现对内存的重复利用

三、map、set与unordered_map区别

mapunordered_map
有序无序
红黑树哈希表
空间占用率高(缺点)哈希表的建立比较耗费时间(缺点)
适于有顺序要求(优点)适于有查找要求(优点)
mapset
既有key也有value只有key没有value
允许修改value,但不允许修改key迭代器是const的,不允许修改元素的值
可以使用下标访问不可以使用下标访问
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值