STL源码剖析
JT同学
这个作者很懒,什么都没留下…
展开
-
STL源码剖析(一)STL简介
STL源码剖析(一)STL简介文章目录STL源码剖析(一)STL简介一、STL概述二、STL六大组件2.1 容器(containers)2.2 算法(algorithms)2.3 迭代器(iterators)2.4 仿函数(functors)2.5 适配器(adapter)2.6 配置器(allocators)三、源码下载一、STL概述STL是Standard Template Librar...原创 2019-09-21 12:21:03 · 1334 阅读 · 0 评论 -
STL源码剖析(二)第一级空间配置器
STL源码剖析(二)空间配置器之第一级空间配置器文章目录STL源码剖析(二)空间配置器之第一级空间配置器一、空间配置器的作用二、空间配置器定义三、第一级空间配置器源码剖析一、空间配置器的作用在学习空间配置器之前,我们需要先知道它是用来干嘛的,简单的说,它就是给容器分配内存的工具,每个容器都需要指定一个空间配置器,用于分配内存和释放内存我们先看一眼vector容器的源码template &...原创 2019-09-21 16:00:39 · 454 阅读 · 1 评论 -
STL源码剖析(三)第二级空间配置器
STL源码剖析(三)更加精致的空间配置器文章目录STL源码剖析(三)更加精致的空间配置器一、为什么需要更加精致的空间配置器?二、源码剖析2.1 初步分析2.2 分配内存(allocate)2.3 释放内存 (deallocate)2.4 内存池填充(refill)2.5 内存池(chunk_alloc)上一篇文章中,我们讨论了空间配置器的作用,还有看了普通的空间配置器的源码,接下来我们来剖析特...原创 2019-09-21 20:00:21 · 509 阅读 · 1 评论 -
STL源码剖析(四)模板的特化
STL源码剖析(四)模板的特化文章目录STL源码剖析(四)模板的特化一、什么是模板的特化?二、为什么需要模板的特化?三、模板特化的语法3.1 类模板的特化3.2 函数模板的特化在STL中,有许多地方使用到了模板的特化,在往下面讲解前,我们需要来学习以下什么是模板的特化,以及为什么需要模板的特殊还有其语法一、什么是模板的特化?首先看一个例子template <class T>...原创 2019-09-22 11:34:29 · 367 阅读 · 0 评论 -
STL源码剖析(五)构造和析构的基本工具
STL源码剖析(五)构造和析构的基本工具文章目录STL源码剖析(五)构造和析构的基本工具一、如何将对象的内存分配释放与构造析构分开?二、construct三、destroy在C++中,使用new运算符的时候,会先为对象分配内存,然后再调用其构造函数。STL为了更加灵活,将内存的分配和对象的构造函数调用分开,前面我们所谈到的空间配置器只负责内存的分配和释放,STL为对象的构造和析构提供了两个全局...原创 2019-09-22 12:15:17 · 331 阅读 · 0 评论 -
STL源码剖析(六)迭代器
STL源码剖析(六)迭代器文章目录STL源码剖析(六)迭代器一、什么是迭代器?二、实现一个简单的容器三、实现容器的迭代器四、STL迭代器的规范4.1 STL迭代器的规范4.2 STL迭代器的分类本文将带你学习什么是迭代器,以及STL的迭代器规范一、什么是迭代器?迭代器是一种有指针行为(->,*,++)的东西,它可以是原生指针,也可以是重载了``operator->、operat...原创 2019-09-24 20:36:21 · 313 阅读 · 0 评论 -
STL源码剖析(七)traits机制
STL源码剖析(七)traits机制文章目录STL源码剖析(七)traits机制一、为什么需要traits机制?二、iterator traits2.1 iterator traits的定义2.2 iterator traits相关的函数三、type traits一、为什么需要traits机制?traits可以称为萃取机,可以通过它来获取迭代器的一些信息,在STL算法中发挥巨大的作用如下面...原创 2019-09-24 21:43:10 · 600 阅读 · 0 评论 -
STL源码剖析(八)序列式容器之vector
STL源码剖析(八)序列式容器之vector文章目录STL源码剖析(八)序列式容器之vector一、容器简介二、vector的数据结构三、vector的迭代器四、vector的操作4.1 构造函数4.2 析构函数4.3 添加元素4.4 删除元素4.5 其他操作一、容器简介STL的容器分为序列式容器和关联式容器,所谓序列式容器是指其中的元素是可序的。所谓关联式容器,指的是每个元素都有key和v...原创 2019-09-25 18:41:51 · 376 阅读 · 0 评论 -
STL源码剖析(九)序列式容器之list
STL源码剖析(九)序列式容器之list文章目录STL源码剖析(九)序列式容器之list一、list的数据结构二、list的迭代器三、list的操作3.1 构造函数3.2 析构函数3.3 添加元素3.4 删除元素3.5 其他操作一、list的数据结构list的底层是一个双向链表,下面来看一看list的数据结构template <class T, class Alloc = alloc...原创 2019-09-28 13:08:11 · 406 阅读 · 0 评论 -
STL源码剖析(十)序列式容器之deque
STL源码剖析(十)序列式容器之deque文章目录STL源码剖析(十)序列式容器之deque一、deque的数据结构二、deque的迭代器三、deque的操作3.1 构造函数3.2 析构函数3.3 添加元素3.4 删除元素3.5 其他操作前面我们说的vector是单向开口,而deque是双向开口,也就是保证常数时间在头部和尾部插入元素一、deque的数据结构我们先讨论deque是如何实现双...原创 2019-09-30 12:38:04 · 504 阅读 · 0 评论 -
STL源码剖析(十一)序列式容器之stack、queue、priority_queue
STL源码剖析(十一)序列式容器之stack、queue、priority_queue文章目录STL源码剖析(十一)序列式容器之stack、queue、priority_queue一、stack1.1 stack的数据结构1.2 stack的操作二、queue2.1 queue的数据结构2.2 queue的操作三、priority_queue3.1 priority_queue的数据结构3.2 ...原创 2019-10-02 10:06:37 · 396 阅读 · 1 评论 -
STL源码剖析(十二)序列式容器之slist
STL源码剖析(十二)序列式容器之slist文章目录STL源码剖析(十二)序列式容器之slist一、slist的数据结构二、slist的迭代器三、slist的操作3.1 构造函数3.2 析构函数3.3 添加元素3.4 删除元素3.5 其他操作slist是这个版本的STL中的单向链表,它是非标准的,也就是STL的标准中并没有要求实现它。在C++11中,有一个标准的单向链表,称为forward_l...原创 2019-10-05 13:35:54 · 515 阅读 · 1 评论 -
STL源码剖析(十三)关联式容器之rb_tree
STL源码剖析(十三)关联式容器之rb_tree文章目录STL源码剖析(十三)关联式容器之rb_tree一、rb_tree的数据结构二、rb_tree的迭代器三、rb_tree的操作3.1 构造函数3.2 析构函数3.3 插入元素3.4 删除元素3.5 其他操作rt_tree是红黑树,在STL中,它并没有对使用者开放,但它非常重要,它作为set和map的底部支持这篇文章不详细讨论红黑树的算法...原创 2019-10-06 15:50:56 · 433 阅读 · 0 评论 -
STL源码剖析(十四)关联式容器之set、multiset
STL源码剖析(十四)关联式容器之set、multi_set文章目录STL源码剖析(十四)关联式容器之set、multi_set一、set、multi_set简介二、set、multi_set的数据结构三、set、multiset的迭代器四、set、multiset的操作4.1 构造函数4.2 析构函数4.3 插入元素4.4 删除元素4.5 其他操作一、set、multi_set简介关联式容...原创 2019-10-06 16:48:33 · 422 阅读 · 0 评论 -
STL源码剖析(十五)关联式容器之map、multimap
STL源码剖析(十五)关联式容器之map、multimap文章目录STL源码剖析(十五)关联式容器之map、multimap一、map、multimap的数据结构二、map、multimap的迭代器三、map、multimap的操作3.1 构造函数3.2 析构函数3.3 插入元素3.4 删除元素3.5 其他操作map 和 multimap 每个元素都是一个对组,有 key 也有 dadama...原创 2019-10-06 17:28:46 · 293 阅读 · 0 评论 -
STL源码剖析(十六)关联式容器之hashtable
STL源码剖析(十五)关联式容器之hashtable文章目录STL源码剖析(十五)关联式容器之hashtable一、hashtable的数据结构二、hashtable的迭代器三、hashtable的操作3.1 构造函数3.2 析构函数3.3 插入元素3.4 删除元素3.5 其他操作hashtable 是哈希表的意思,它并不是 STL 标准的,也就是 STL 并没有要求实现它。hashtable...原创 2019-10-07 10:41:09 · 359 阅读 · 0 评论 -
STL源码剖析(十七)关联式容器之hash_set、hash_multiset
STL源码剖析(十六)关联式容器之hash_set、hash_multiset文章目录STL源码剖析(十六)关联式容器之hash_set、hash_multiset一、hash_set、hash_multiset的数据结构二、hash_set、hash_multiset的迭代器三、hash_set、hash_multiset的操作3.1 构造函数3.2 析构函数3.3 插入元素3.4 删除元素3...原创 2019-10-07 11:26:21 · 281 阅读 · 0 评论 -
STL源码剖析(十八)关联式容器之hash_map、hash_multimap
STL源码剖析(十八)关联式容器之hash_map、hash_multimap文章目录STL源码剖析(十八)关联式容器之hash_map、hash_multimap一、hash_map、hash_multimap的数据结构二、hash_map、hash_multimap的迭代器三、hash_map、hash_multimap的操作3.1 构造函数3.2 析构函数3.3 插入元素3.4 删除元素3...原创 2019-10-07 11:54:23 · 513 阅读 · 0 评论