【C++后台开发面试】STL相关

此部分较为精简,只供面试前联想记忆使用,需要先熟读相关的内容知识才能发挥其作用。推荐书籍《STL源码剖析》(侯捷)。

  1. 六大组件及其关系
    空间配置器、容器、迭代器、算法、仿函数、适配器

  2. 内存管理:内存配置和对象构造/析构分开。
    使用双层级配置器:第一级直接 malloc,free;第二级内存池(维护 16 个自由链表)

  3. 迭代器:一种智能指针

  4. Vector: 动态分配的数组,连续线性空间;
    维护 3 个迭代器:start,finish,end_of_storage
    无备用空间->若为 0,配置为 1,否则配置为 2 倍
    需要重新配置、移动数据、释放原空间,所以迭代器失效

  5. List:环状的双向链表,尾部有空白节点(为满足左闭右开),节点不保证连续存在,迭代器不失效。内部有一个 last 迭代器指向尾端空白节点(其 next 为 begin 迭代器)。
    List 不能使用算法 sort(只接受随机存取迭代器),它有自己内置的 sort。

  6. Deque:双向开口的连续线性空间,没有容量概念,动态地以分段连续空间组合而成, 随时可增加新空间并链接起来(伪连续,负担落在迭代器身上)
    使用中控器 map,存的指针,指向实际存储块
    迭代器失效:
    a. 在deque容器首部或者尾部插入元素不会使得任何

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值