您的位置:首页 > 理论基础 > 数据结构算法

数据结构 初识STL之空间配置器

2017-07-16 16:19 330 查看
一、STL

STL有六大组件,分别是空间配置器、适配器、类型萃取、容器、仿函数、迭代器。

1. 空间配置器:内存池实现小块内存分配,对应到设计模式–单例模式(工具类,提供服务,一个程序只需要一个空间配置器即可),享元模式(小块内存统一由内存池进行管理)

2.迭代器:迭代器模式,模板方法

3.容器:各种数据结构,用来存放数据如vector、list、map、set、deque

4.类型萃取:基于范型编程的内部类型解析,通过typename获取。可以获取迭代器内部类型value_type,Poter,Reference等。

5.仿函数:一种类似于函数指针的可回调机制,用于算法中的决策处理。涉及:策略模式,模板方法。

6适配器:STL中的stack,queue通过双端队列deque适配实现,map,set通过RB-Tree适配实现。涉及适配器模式

二、空间配置器

空间配置器的提出主要是为了解决以下几个问题

1.效率低

2.内存碎片

3.内存开辟失败

4.额外的开销

其使用场景为

1.频繁开辟小块内存(<=128字节)

2.效率

二级空间配置器(开辟<=128字节内存)

本质是从一个内存池中拿到一大块内存,然后按大小分成16个(8、16…128)每一个都是一个free_list,上边的节点对应空间

先申请空间,如果够,则返回节点

不够的话,看有无不在使用的空间,free掉,在开辟(以死循环的方式)

一级空间适配器(用于开辟大块内存>128)

直接使用malloc/free来动态开辟内存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: