![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《STL源码剖析》
z-k
这个作者很懒,什么都没留下…
展开
-
泛读《STL源码剖析》第三章:迭代器概念与traits编程技法
迭代器作用 STL中,算法和容器是分开的,彼此独立,通过迭代器联系在一起 迭代器的设计,就是为了在不暴露容器的内部表达式的前提下让算法能够遍历容器的各个元素 traits技法的引出 迭代器是一种类似指针的对象,最重要的便是对operator *和operator ->进行重载,为了让迭代器适用于任何型态的结点,需要把它设计为class template 在算法中运用迭代器,很...原创 2019-02-01 16:22:03 · 295 阅读 · 0 评论 -
泛读《STL源码剖析》第四章:序列式容器之list源码
list的结点 list的迭代器 迭代器类型是Bidirectional Iterators 迭代器设计:内部是一个普通指针,但重载各种操作符号 list的数据结构 node刻意指向尾端的空白节点,node便符合STL中“前闭后开”的要求,成为last迭代器 如此,begin( ),end( ),empty( ),front( ),back( )函数便可轻易实现 ...原创 2019-02-21 18:17:56 · 285 阅读 · 0 评论 -
泛读《STL源码剖析》第二章:空间配置器
目录目录目录目录 前言 SGI特殊空间配置器,std::alloc 构造和析构基本工具:construct()与destroy() std::alloc空间的配置与释放 一级配置器: 二级配置器: 空间配置函数allocate() 空间释放函数deallocate() 重新填充free lists:refill()函数 内存池 内存基本处理工具 ①uninitialized...原创 2019-01-30 16:40:09 · 456 阅读 · 0 评论 -
泛读《STL源码剖析》第四章:序列式容器之vector源码
vector概述 由于array 是静态空间,一旦配置了就不能改变;要换个大(或小)一点的空间需要客端自己执行很多细节:配置新空间,然后将元素从旧址搬往新址,再把原来的空间释还给系统,比较麻烦 因此,vector的设计对内存的利用和灵活性有比较大的提升 vector定义摘要 欲使用 vector 须先含入 <vector>头文件 ,但 SGI STL 将 vector 实作于更...原创 2019-02-12 19:03:54 · 426 阅读 · 0 评论 -
hashtable的原理
hashtable作为unordered_set和unordered_map的底层数据结构,是隐藏起来的,正常不会直接用到它,但要理解好unordered_set和unordered_map,需要先理解好hashtable hashtable的底层数据结构是vector,vector中的元素是链表 vector代表篮子,初始化大小为53(GNU的做法),存的是结点指针 元素放进来的时候...原创 2019-03-14 11:52:40 · 555 阅读 · 0 评论