
STL源码剖析
文章平均质量分 82
Coding_Reading
待我编码有成 娶你为妻可好
展开
-
STL源码剖析——RB_TREE
花了差不多一个星期的时间读完了STL红黑树的实现,并凭理解自己写了出来 参考了《算法导论》,教你透彻了解红黑树,强烈推荐,《STL源码剖析》 记录下自己的理解RB_TREE红黑树优点: 与BST相比插入,查找,删除在最坏情况下的复杂度仍为O(lgn),相比BST应用范围更广 STL容器set,map都以红黑树为底层容器实现,Linux进程调度算法也用红黑树实现四种性质: 1. 每个结点要原创 2017-12-09 20:19:01 · 414 阅读 · 0 评论 -
STL源码剖析——deque的实现
deque简介deque是一个双向开口的容器,可在头尾两端插入和删除元素,deque由动态的连续空间组合而成,因为迭代器的良好设计,提供了随机访问,造成一种deque为连续空间的假象deque的数据结构deque有一个二级指针map,map指向一小块空间,其中的每个元素都是指针,指向一段连续线性空间,称为缓冲区,缓冲区为deque存储的主体,其中存放元素tempalte <class T, clas原创 2017-11-01 17:39:57 · 574 阅读 · 0 评论 -
STL源码剖析——type traits编程技法
type traits 负责萃取元素类型的特性,如果元素具有某个性质则我们调用某个函数,如果不具有某个性质则调用另一个函数。它充分利用了C++模板编程和编译器的参数推导功能(编译器只有面对类类型参数才会进行参数推导)。STL大量运用了traits编程技巧,通过模板特化,函数重载让编译器选择正确的处理方式,在编译器就能完成函数分发,极大的提高了灵活性。先看一个例子#include <iostream>原创 2017-09-08 17:02:15 · 384 阅读 · 0 评论 -
STL源码剖析——内存空间管理
STL内存空间管理工具alloc1.第一级配置器__malloc_alloc_templatestaic void *allocate(size_t n) { void *result = malloc(n);//直接调用malloc if (0 == n) result = oom_malloc(n); return result;}static void *deallo原创 2017-09-03 17:33:52 · 999 阅读 · 1 评论