stl基于源码剖析底层实现
文章平均质量分 92
根据gcc中stl实现源码,深入分析stl的底层实现、使用算法以及性能等。
cpp加油站
公众号:cpp加油站,专注分享linux下cpp知识
展开
-
【STL源码拆解】基于源码分析forward_lsit容器实现(详细!)
本篇文章介绍一下c++11中新增的顺序容器forward_list,基于stl的源码分析一下该容器的整体实现及数据结构。说明一下,我用的是gcc7.1.0编译器,标准库源代码也是这个版本的。按照惯例,还是先看一下本文大纲,如下:1. forward_list是什么forward_list是c++11为STL新增加的一种顺序容器,使用的时候包含头文件forward_list即可,真实的类声明位于头文件bits/forward_list.h中,类forward_list是一个类模板,基于单链表结构原创 2021-08-09 09:45:42 · 371 阅读 · 4 评论 -
【deque容器系列二】基于STL源码分析deque容器插入和删除时内存都是怎么变动的
上篇文章我们介绍了deque容器整体结构和构造实现,链接如下:基于STL源码分析deque容器整体实现及内存结构本篇文章接上篇,继续基于gcc中stl的源码剖析deque容器插入、删除、取值的实现原理,以提问者的角度去深入分析这些操作过程中发生了什么,并对deque容器适合使用的场景和使用时的注意事项进行说明。说明一下,我用的是gcc7.1.0编译器,标准库源代码也是这个版本的。按照惯例,还是先看一下本文大纲,如下:0. deque容器迭代器说明在正式开始讲述插入、删除等操作的实现前,我们原创 2021-07-16 12:32:10 · 425 阅读 · 24 评论 -
【deque容器系列一】基于STL源码分析deque容器整体实现及内存结构
本篇文章基于gcc中stl的源码介绍deque容器的整体实现和它的内存结构。说明一下,我用的是gcc7.1.0编译器,标准库源代码也是这个版本的。首先呢,还是看一下思维导图,如下:1. deque容器整体源码实现介绍deque容器是stl中顺序容器的一种,之前已经介绍过array和vector了,今天介绍deque容器,deque的本质是一个类模板,它的声明位于头文件bits/stl_deque.h,实现位于bits/deque.tcc,接下来我们就围绕这两个文件来介绍一下deque容器的实现原创 2021-07-14 11:37:00 · 339 阅读 · 8 评论 -
从c++标准库指针萃取器谈一下traits技法
本篇文章基于gcc中标准库源码剖析一下标准库中的模板类pointer_traits,并且以此为例理解一下traits技法。说明一下,我用的是gcc7.1.0编译器,标准库源代码也是这个版本的。还是先看一下思维导图,如下:1. 指针萃取器pointer_traits说明首先说明一下哈,官方并没有指针萃取器这个名称,其实pointer_traits是类模板,它是c++11以后引入的,可以通过传入的重绑定模板类型得到相应的指针类型,比较官方的描述是:pointer_traits 类模板提供标准化方法原创 2021-07-12 11:07:16 · 495 阅读 · 28 评论 -
三张图带你弄懂stl内存分配器,再也不怕面试官问了
本篇文章基于源码来剖析标准库中内存分配器的实现原理及使用。说明一下,我用的是gcc7.1.0编译器,标准库源代码也是这个版本的。还是来先通过思维导图来看一下本篇文章会从哪些方面来讲解stl中内存分配器和萃取器,如下:其实stl中有关内存申请的操作是包含两个内容的:内存分配器、内存萃取器。一、vector容器中对内存分配器的使用前面的文章中说了,vector容器本质上是个动态数组,它其实就是使用标准库的内存分配器实现的,还是先看一下代码,如下:template<typename _Tp原创 2021-06-04 19:29:18 · 656 阅读 · 0 评论 -
超详细STL之基于源码剖析vector实现原理及注意事项
本篇文章基于源码来剖析标准模板库中vector容器的实现原理及一些特殊注意事项。说明一下,我用的是gcc7.1.0编译器,标准库源代码也是这个版本的。多年以前面试的时候第一次被问到stl中vector的底层实现,那个时候的我真的很low,根本回答不上来,后来面试回来,在网络上搜索了一些vector底层实现,知道了它的底层是动态数组,但光知道动态数组是不够的,进一步的,动态数组写满了怎么办,它的实现用了c++的什么技术,一些特殊场景下怎么使用vector更有效率等等,这些极少有人讲清楚,今天我基于gc原创 2021-06-02 09:21:45 · 415 阅读 · 0 评论 -
超详细STL之array容器使用及实现原理解析
说明一下,我用的是gcc7.1.0编译器,标准库源代码也是这个版本的。本篇文章讲述STL中array的使用及原理。导读array其实是一个固定大小的数组,元素类型及大小在声明的时候指定,原型如下:template<typename _Tp, std::size_t _Nm> struct array { ... };有些书上说array也是一个class,但是我这个版本看到的是struct,不过没有关系,除了一些细微的方面,struct和class.原创 2021-05-21 09:25:45 · 1277 阅读 · 0 评论