STL-源码剖析 简单总结

STL 六大组件 功能与运用

1. 容器

各种数据结构 ,vector ,list ,deque,set,map,从实现角度来看,STL容器是一种class template

2. 算法

各种常用算法,sort,search,copy,erase,从实现角度来看,STL容器是一种function template

3. 迭代器

扮演容器与算法之间的胶合剂,泛型指针,有五种类型,从实现角度来说,就是把operator*,operator->,opreator++,opreator–等指针相关操作予以重载的class template ,每个STL容器都附带有自己专属的迭代器。原生指针也是一种迭代器。

4. 仿函数

什么是仿函数?
行为类似函数。 好好体会下这句话

5. 配接器(adapters)

顾名思义,想想配接器模式(adapter design)

6. 配置器(allocators)

负责空间配置与管理,实现了动态空间配置,空间管理,空间释放。


空间配置器(allocator)

在这里插入图片描述在这里插入图片描述
SGI设计了双层级配置器(面试会被问道),主要是为了解决小型区块所可能造成的内存破碎问题。
SGI第一级配置器通过 malloc和 free 完成内存的配置与释放。第二级配置器则通过不同的策略来进行操作:首先,看配置区块的大小,看其是否超过128bytes,是的话,给第一级配置器,当配置器区块小于128bytes时,采用memory pool 整理方式。
那么,究竟只用第一级就OK,还是同时都用呢,要看__USE_MALLOC 这个参数是否被定义。(侯捷老师这里注:说这个参数名字并不理想,因为无论如何malloc总是要被调用的,对吧)。具体过程看下图。
在这里插入图片描述


下面逐个讲解第一级配置器和第二级配置器

第一级配置器

实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值