STL源码剖析
文章平均质量分 90
阅读《STL源码剖析》过程中进行记录,并对书中未介绍的部分内容进行补充介绍。
WizardtoH
做一个快乐的、优秀的码农
展开
-
《STL源码剖析》笔记-STL概论和版本介绍
《STL源码剖析》对标准模板库(Standard Template Library)中的各个组件的底层实现进行介绍和分析,能够帮助加深对STL的理解,并学习到其中的编程思想,下面我们开始对STL的深入了解。STL六大组件容器(containers):各种数据结构,例如vector、list、map等,用来存放数据。算法(algorithms):提供各种算法,例如sort、seach等。...原创 2018-08-22 16:46:27 · 694 阅读 · 0 评论 -
《STL源码剖析》笔记-空间配置器
上一篇:《STL源码剖析》笔记-STL概论和版本介绍单从运用STL来说,空间配置器是了解不到的,因为它隐藏在了容器的背后默默工作。原创 2018-08-29 17:23:51 · 858 阅读 · 0 评论 -
《STL源码剖析》笔记-迭代器iterators
上一篇:《STL源码剖析》笔记-空间配置器原创 2018-09-05 17:01:16 · 540 阅读 · 0 评论 -
《STL源码剖析》笔记-容器的分类
上一篇:《STL源码剖析》笔记-迭代器iterators任何特定的数据结构都是为了实现某种特定的算法,STL中的容器是将运用最广的一些数据结构进行实现,例如:数组array、链表list、树tree、堆栈stack、队列queue、散列表hash talbe、集合set、映射表map等。根据数据在容器中的排列特性,可以分为序列式容器和关联式容器。 序列式容器序列式容器,其中的元素都可...原创 2018-09-06 23:58:44 · 514 阅读 · 0 评论 -
《STL源码剖析》笔记-vector
上一篇:《STL源码剖析》笔记-容器的分类vector的元素排列和操作方式与array很相似,不同的是vector是动态空间,能够随着元素的添加自动扩展空间。它的实现关键在于对大小的控制以及重新配置空间时移动元素的效率。vector的迭代器// alloc是SGI STL的默认空间配置器template <class T, class Alloc=alloc>cla原创 2018-09-09 22:03:41 · 1316 阅读 · 0 评论 -
《STL源码剖析》笔记-list
上一篇:《STL源码剖析》笔记-vector相较于vector的连续线性空间,list就复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。list的节点template <class T>struct __list_node{原创 2018-09-11 17:21:11 · 648 阅读 · 0 评论 -
《STL源码剖析》笔记-deque
上一篇:《STL源码剖析》笔记-list原创 2018-09-13 16:44:14 · 378 阅读 · 0 评论 -
《STL源码剖析》笔记-stack、queue
上一篇:《STL源码剖析》笔记-dequestack是一种先进后出的数据结构,它只有一个出口,只能够在顶端新增、移除、取得元素,没有其他方式进行操作。并且stack默认示意deque作为基础容器来实现的,因为vector在扩容的时候有较差的时间复杂度,而list虽然有平稳的时间复杂度,但是总体平均复杂度较高,所以折中使用deque作为stack的底层容器。另外stack没有迭代器,因为只支持先...原创 2018-09-16 09:58:16 · 397 阅读 · 0 评论 -
《STL源码剖析》笔记-priority_queue、heap算法
上一篇:《STL源码剖析》笔记-stack、queuepriority_queue是一个带权值的队列,权值最高的自动排在最前面,默认排序从大到小,同时具有队列先进先出、没有迭代器的特性。priority_queue也是一种container adapter,底层容器默认为vector。stack定义完整列表// 排序方式less(从大到小),也能指定为greater(从小到大)templa...原创 2018-09-22 00:13:04 · 492 阅读 · 0 评论 -
《STL源码剖析》笔记-树的介绍
上一篇:《STL源码剖析》笔记-priority_queue、heap算法序列式容器介绍完后就是关联式容器,关联式容器内部数据结构大多是平衡二叉树以获得较好的搜寻效率,因此先对树进行大概的了解。树由节点(nodes)和边(edges)构成。整棵树有一个最上端节点,称为根节点(root)。每个节点可以拥有具有方向性的边(directed edges),用来和其他节点相连。相连节点之中,在上者称为...原创 2018-09-22 22:11:42 · 546 阅读 · 0 评论 -
《STL源码剖析》笔记-RB-tree
上一篇:《STL源码剖析》笔记-树的介绍除了上一篇说到的AVL-tree之外,另一个常用的平衡二叉搜索树是RB-tree(红黑树)。RB-tree满足二叉搜索树的规则之外,还遵循以下特性:每个节点不是红色就是黑色。根节点为黑色。如果节点为红色,其子节点必须为黑色。任意一个节点到到NULL(树尾端)的任何路径,所含之黑色节点数必须相同。第四个特性和第三个特性确保了没有一条路径会比其他...原创 2018-10-10 18:40:25 · 767 阅读 · 0 评论 -
《STL源码剖析》笔记-set
上一篇:《STL源码剖析》笔记-RB-treeset容器的特性就是所有元素都会根据键值进行自动排序,和map不同的是set的键值就是实值。并且通过set的迭代器无法改变set的键值,因为改变键值会打破set的排序。set排序的特性能够由rb-tree实现且所需接口rb-tree都已经提供,所以set底层采用了rb-tree。// 默认使用递增排序template <class Key,...原创 2018-10-12 19:32:00 · 346 阅读 · 0 评论 -
《STL源码剖析》笔记-map
上一篇:《STL源码剖析》笔记-setmap容器的特性是所有元素都会根据键值自动排序,并且所有元素都是pair,拥有键值和实值。pair的第一个元素为键值,第二个元素为实值。map当中不允许存在两个键值相同的元素。pair的定义pair定义了两个模板参数,并且访问权限为public。template <class T1, class T2>struct pair { ty...原创 2018-10-13 10:02:00 · 593 阅读 · 0 评论 -
《STL源码剖析》笔记-multiset/multimap
上一篇:《STL源码剖析》笔记-map原创 2018-10-16 16:54:13 · 343 阅读 · 0 评论 -
《STL源码剖析》笔记-hashtable
上一篇:《STL源码剖析》笔记-multiset/multimap原创 2018-10-21 17:38:08 · 474 阅读 · 0 评论 -
《STL源码剖析》笔记-hash_set、hash_map
上一篇:《STL源码剖析》笔记-hashtablehash_sethash_set底层机制由hashtable提供,和set一样能够快速搜索元素,但是set元素插入后会自动排序,而hash_set是无序的。template <class Value, class HashFcn = hash<Value>, class EqualKey = equal_to<...原创 2018-10-22 09:13:42 · 406 阅读 · 0 评论 -
《STL源码剖析》笔记-hash_multiset、hash_multimap
上一篇:《STL源码剖析》笔记-hash_set、hash_maphash_multiset/hash_multimap与hash_set/hash_map特性一致,区别在于multiset/multimap的键值能够重复。也就是说,他们使用了hashtable的insert_equal而非insert_unique。hash_multiset和hash_set的区别:... templ...原创 2018-10-24 22:05:19 · 290 阅读 · 0 评论 -
《STL源码剖析》笔记-算法
上一篇:《STL源码剖析》笔记-hash_multiset、hash_multimapSTL提供了很多算法,以下列出部分常用的算法:int main(int argc, char* argv[]){ std::vector<int> vec = {0,1,2,3,4,5,6,7,8,9}; // accumulate:计算指定容器区域中,以0原创 2018-10-31 23:03:45 · 349 阅读 · 0 评论 -
《STL源码剖析》笔记-仿函数(函数对象)
上一篇:《STL源码剖析》笔记-算法原创 2018-11-01 18:13:57 · 399 阅读 · 0 评论 -
《STL源码剖析》笔记-配接器adapters
上一篇:《STL源码剖析》笔记-仿函数(函数对象)配接器adapters在STL中起到转换、连接的作用,包括仿函数配接器(function adapter)、容器配接器(container adapter)、迭代器配接器(iterator adapter)。容器配接器在介绍序列式容器queue和stack时(https://blog.youkuaiyun.com/WizardtoH/article/de...原创 2018-11-03 12:57:13 · 334 阅读 · 0 评论