数据结构 初识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来动态开辟内存
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来动态开辟内存
相关文章推荐
- STL之空间配置器
- STL----空间配置器
- 【STL】空间配置器
- STL之空间配置器
- STL中的空间配置器allocator的实现原理及源码剖析
- C++ STL源码解析:空间配置器allocator分析
- 【STL】空间配置器(二):二级空间配置器
- STL空间配置器的union obj
- 【STL】空间配置器
- STL学习_SGI空间配置器_第一级配置器源码分析
- STL源代码分析--第二级空间配置器
- STL学习笔记——空间配置器
- [stl] SGI STL的空间配置器
- STL之空间配置器分析
- SGI STL 第二级空间配置器函数 allocate()
- C++STL学习(13)STL深入(2) SGI STL空间配置器
- 【STL深入学习】SGI STL空间配置器详解(一)-第一级空间配置器
- STL空间配置器源码及其分析
- 【STL深入学习】SGI STL空间配置器详解(二)-第二级空间配置器
- STL学习笔记之空间配置器