
STL
STL源码剖析与实现
凌桓丶
现腾讯边缘存储研发工程师,前字节跳动流式计算研发工程师、优快云博客专家。
展开
-
C++ STL : SGI-STL空间配置器源码剖析
文章目录空间配置器的概念SGI-STL空间配置器一级空间配置器二级空间配置器申请空间补充内存块从内存池中索要空间空间回收内存碎片外碎片内碎片空间配置器的再次封装空间配置器的概念空间配置器,顾名思义就是为各个容器高效的管理空间(空间的申请与回收) 的,在默默地工作。在之前所有模拟实现的容器中,对于空间的管理都是通过直接调用new和delete来进行的,虽然代码可以正常运行,但是还是存在着大量的缺点。空间申请与释放需要用户自己管理,容易造成内存泄漏频繁向系统申请小块内存块,容易造成内存碎片频繁原创 2020-08-04 16:59:50 · 1395 阅读 · 0 评论 -
C++ STL : 模拟实现STL中的关联式容器map和set
目录底层红黑树的改造仿函数红黑树的迭代器完整代码setset的文档介绍set的实现mapmap的文档介绍map的实现底层红黑树的改造数据结构:红黑树的原理以及实现(C++)红黑树的实现上一篇博客已经完成,但是如果想用来实现map和set,来需要进行改造仿函数因为我们需要使用一棵红黑树来实现KV模型的map和K模型的set,为了实现代码复用,此时就需要用仿函数来解决这个问题,我们需要用到三个模板参数template<class K, class T, class KOfV>这里的原创 2020-07-09 15:04:19 · 691 阅读 · 0 评论 -
C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set
目录unordered_map/unordered_set# unordered_map/unordered_set与map/set的区别底层哈希桶的改造仿函数Key值的获取方法hash(key)的获取方法迭代器完整代码unordered_set文档介绍代码实现unordered_map文档介绍代码实现unordered_map/unordered_setC++ STL : 模拟实现STL中的关联式容器map和set这次实现的unordered_map/unordered_set的具体思路和实现的ma原创 2020-07-13 17:35:13 · 888 阅读 · 0 评论 -
C++ STL : 模拟实现STL中的容器适配器priority_queue
目录priority_queue文档介绍实现思路思路仿函数实现priority_queue文档介绍文档介绍优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元 素)。优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特 定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。底层容器可以是任何标准容器原创 2020-06-04 16:29:21 · 782 阅读 · 0 评论 -
C++ STL : 模拟实现STL中的容器适配器stack和queue
目录什么是容器适配器stackstack的文档介绍-(来自cplusplus)stack的实现queuequeue的文档介绍-(来自cplusplus)queue的实现什么是容器适配器之前模拟实现的vector,string,list等都是容器,而这次要实现的stack和queue则是容器适配器,那么什么是容器适配器呢?适配器其实就是一个转换装置,这种东西在生活中非常常见。例如将USB接口转为Type-c接口,就可以在手机上用U盘,又或者三脚插头转二脚插头,方便使用更多的插座。适配器的作用就是在不更原创 2020-06-02 16:23:50 · 825 阅读 · 0 评论 -
C++ STL : 模拟实现STL中的list类
文章目录listlist的介绍list的优缺点list的迭代器失效问题实现的接口节点部分迭代器部分list部分代码实现listlist的介绍list的文档介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单原创 2020-05-27 20:03:54 · 998 阅读 · 0 评论 -
C++ STL : 模拟实现STL中的vector类
文章目录vectorvector的介绍vector的优缺点实现时需要注意的细节问题1. Capacity增长问题2. memset等函数来带的按字节拷贝问题3. 深浅拷贝问题4. 迭代器失效问题实现的接口代码实现vectorvector的介绍vector的文档介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容原创 2020-05-23 18:51:00 · 1507 阅读 · 0 评论 -
C++ STL : 模拟实现STL中的string类
string的文档介绍string是表示字符序列的类标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作 单字节字符字符串的设计特性。string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型(关于模板的更多信 息,请参阅basic_string)。string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic原创 2020-05-12 17:07:23 · 1556 阅读 · 1 评论