随笔分类 -  STL源码分析

本专栏通过分析STL3.0源码以及STL源码剖析总结出来的
摘要:前言 在分析 编程之前, 我们需要对模板参数类型 和`class traits`编程的核心. 如果你已经明白了两者, 那么你可以直接看下一篇了. 相同之处 一般对模板参数类型 和`class`认为是一样的. 这两者在参数类型中确实是一样的. 你可以写成 也可以写成 这两者都是一样的, 没有区别. 两 阅读全文
posted @ 2018-12-12 19:37 倔强的铃铛 阅读(564) 评论(0) 推荐(0)
摘要:前言 迭代器是将算法和容器两个独立的泛型进行调和的一个接口. 使我们不需要关系中间的转化是怎么样的就都能直接使用迭代器进行数据访问. 而迭代器最重要的就是对 和`operator `进行重载, 使它表现的像一个指针. 类型 迭代器根据移动特性和实施操作被分为5类 1. input iterator( 阅读全文
posted @ 2018-12-11 22:00 倔强的铃铛 阅读(411) 评论(0) 推荐(0)
摘要:前言 上一节只分析了第二级配置器是由多个链表来存放相同内存大小, 当没有空间的时候就向内存池索取就行了, 却没有具体分析内存池是怎么保存空间的, 是不是内存池真的有用不完的内存, 本节我们就具体来分析一下 内存池 static data template的初始化 这里代码注释写的很清楚了, 我就提取 阅读全文
posted @ 2018-12-09 23:59 倔强的铃铛 阅读(709) 评论(0) 推荐(0)
摘要:前言 第一级是直接调用 分配空间, 调用 释放空间, 第二级三就是建立一个内存池, 小于128字节的申请都直接在内存池申请, 不直接调用 和`free`. 本节分析第二级空间配置器, STL将第二级配置器设置为默认的配置器, 所以只要一次申请的空间不超过128字节就默认在内存池中申请空间, 超过才会 阅读全文
posted @ 2018-12-08 15:24 倔强的铃铛 阅读(477) 评论(0) 推荐(0)
摘要:前言 上一节我们分析了空间配置器对new的配置, 而STL将空间配置器分为了两级, 第一级是直接调用 分配空间, 调用 释放空间, 第二级三就是建立一个内存池, 小于128字节的申请都直接在内存池申请, 不直接调用 和`free`. 本节我们就先分析第一种空间配置器, 直接调用malloc, fre 阅读全文
posted @ 2018-12-06 19:03 倔强的铃铛 阅读(204) 评论(0) 推荐(0)
摘要:前言 SGI STL将new的申请空间和调用构造函数的两个功能分开实现, 如果对new不太清楚的, 可以先去看看这一篇new实现再来看配置器也不迟. 本节是STL分析的第一篇, 主要分析STL各个部分都会出现的alloc实现, 虽然每个部分都只会默认调用它, 不了解它也可以看懂分析, 但是他又是不可 阅读全文
posted @ 2018-11-29 14:14 倔强的铃铛 阅读(245) 评论(0) 推荐(0)