STL源码剖析精读

前言

通过刷题感受到了C++中STL的妙用,十分的想要提高自己对于STL的理解以及运用能力,因此开设此专栏,并希望能够带领大家一起感受C++中STL的魅力。

一、STL简介

STL(标准模板库,Standard Template Libarary)。身位C++标准库的重要组成部分,STL(标准模板库)是一个 可复用的组件库 ,也是一个保罗算法和数据结构的软件框架。
其中包括了算法(algorithm)、容器(container)、迭代器(iterator)。

二、初识STL

在LeetCode刷题过程中,想必点开过C++语言的模板的同学都会见过STL中的容器技术的内容比如vector string ,这些都是容器。
给一些从C语言转入C++的同学稍微介绍一下,在之后的阅读过程中我也会重新记录阅读体会与总结,所以已经可以使用C++刷题的同学可以跳过这一部分内容。
简单的介绍一下vector容器,这样C的同学就可以用vector容器去刷一些数组的题了:
vector容器的底层可以理解为数组,在我们使用的时候 vector<int> vec 这样定义一个变量(也叫创建对象,vector就是一个类,不理解类的概念的同学可以把它当做C语言中的结构体,不过可以在其中写函数)。
好了,之前已经说过可以把vector容器理解为一个数组那么我就看一下下面这段代码:

#include<iostream>
#include<vector>//使用vector容器需要包含此头文件
using namespace std;int main(){//这样vector<int> vec(10);//这里和创建数组无异,注意是小括号,尖括号中是数据类型for(int i=0;i<vec.size();++i){//vec.size()是vector这个类中自带的求数组大小的函数int a;cin>>a;vec[i]=a;}//或者vector<int> nums;int a;while(cin>>a){nums.push_back(a);//vector容器下的函数,push_back方法,将push_back中传入的实参增加到容器的末尾}return 0;
}

根据我所写的注释,可以简单的了解vector容器作为数组的特性,以及自带的两个函数,使用这些,就可以使用C语言的写法在C++模板中对数组的题进行刷题了。

STL源码剖析:

术语及其大陆翻译与本书翻译

英文术语 大陆惯用译法 本书译法
adapter 适配器 配接器
argument 实参(实质参数) 引数
by reference 传参考,传地址 传址
by value 传值 传值
dereference 反引用,解参考(解引用) 提领
evaluate 评估,计算 评估,核定
instance 案例,实例 实体
instantiated 实例化 实体化,具体化
library 库,函数库 程序库
range 范围 区间(使用于STL时)
resolve 解析 决议
parameter 形参(形式参数) 参数
type 类型 型别

面向STL编程

这本书不适合C++初学者,不适合泛型技术初学者,或STL初学者,也不适合带领你学习OOP技术,STL和OOP并无什么联系。
想要学习STL的同学可以和我一起阅读此书,若是C语法基础仍然吃力,建议先学习其它内容,待学成归来再来看本专栏,必会受益匪浅。

天下大事,必作于细!

本专栏定位

可到英雄哥星球(暂时不招人了)获取本书电子版,有能力的同学建议购买正版书籍。

本专栏适合想要深入学习STL的同学,并且可以提高个人对于数据结构、算法等的编码能力。

好了接下来就让我们正式进入学习吧!

【有点狂的手撕STL】STL源码剖析精读 000相关推荐

  1. string list 查找_手撕java集合源码——List篇

    阅读list集合观察它们底层是如何实现的,以及集合面试中提出的问题进行实践. list集合中常用的类为Arraylist.LinkedLIst. 两者的区别 区别 Arraylist LinkedLi ...

  2. 手撕Java集合源码——list集合

    Java集合(一)--LinkedList和ArrayList源码 一.集合 集合主要分为两组(单列集合,双列集合) 单列集合:存放单个元素 Collection:两个重要的接口 List Set A ...

  3. C++(STL):11---vector源码剖析

    一.vector概述 vector的使用语法可以参考文章之前的几篇文章,总的来说:vector是可变大小数组 特点: 支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢 元素保存在连续的内存空间 ...

  4. 手撕TreeSet底层源码

    public interface SortedMap<K,V> extends Map<K,V> {}public interface NavigableMap<K,V& ...

  5. 万字长文炸裂!手撕 STL 迭代器源码与 traits 编程技法

    大家好,我是小贺. 1. 前言 天下大事,必作于细. 源码之前,了无秘密. 上一篇,我们剖析了 STL 空间配置器,这一篇文章,我们来学习下 STL 迭代器以及背后的 traits 编程技法. 在 S ...

  6. 【STL源码剖析】list模拟实现 | 适配器实现反向迭代器【超详细的底层算法解释】

    今天博主继续带来STL源码剖析专栏的第三篇博客了! 今天带来list的模拟实现! 话不多说,直接进入我们今天的内容! 前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://b ...

  7. 《STL源码剖析》相关面试题总结

    一.STL简介 STL提供六大组件,彼此可以组合套用: 容器 容器就是各种数据结构,我就不多说,看看下面这张图回忆一下就好了,从实现角度看,STL容器是一种class template. 算法 各种常 ...

  8. STL源码剖析学习七:stack和queue

    STL源码剖析学习七:stack和queue stack是一种先进后出的数据结构,只有一个出口. 允许新增.删除.获取最顶端的元素,没有任何办法可以存取其他元素,不允许有遍历行为. 缺省情况下用deq ...

  9. 《STL源码剖析》学习-- 1.9-- 可能令你困惑的C++语法1

    最近在看侯捷的<STL源码剖析>,虽然感觉自己c++看得比较深一点,还是感觉还多东西不是那么明白,这里将一些细小的东西或者概念记录一下. 有些东西是根据<C++编程思想>理解的 ...

最新文章

  1. 趣图:好好干,今天再加个班
  2. Android安全问题 抢先接收广播 - 内因篇之广播接收器注册流程
  3. sqlserver 中统计信息语句
  4. jclouds_使用jclouds在S3上分段上传
  5. C#学习笔记(十一):动态类型
  6. C/C++ Native 包大小测量
  7. 车辆撞人有全险但是是全责,车主不愿出钱垫付医药费,该怎么办?
  8. 阿里云加速器拉取tomcat
  9. STC8PROG - Linux下的 STC8G STC8H 烧录工具
  10. 思科网络工程师面试题
  11. 基于STM32的PWM电机驱动TB6612、A4950
  12. 计算机截图工具无法运行,重装win7系统后打开截图工具显示“截图工具当前未在计算机上运行”如何解决...
  13. Objective C 类变量的声明
  14. 史上最全Elasticsearch学习
  15. 【历史上的今天】11 月 20 日:微软发布 Windows 1.0;Lotus Notes 发明者出生;奔腾4 诞生
  16. 电子商务平台简介——Makingware
  17. PHP源码让我帮你百度一下专治伸手党
  18. python在pip安装pytorch时候killed
  19. 炫美泡泡飞舞特效(源代码+效果)
  20. DVB-S相关知识第二章-卫星接收锁频参数介绍

热门文章

  1. android g711,Android 录音PCM 转G711U,非常简单,非FFMPEG
  2. “轻医美”趋势确认,互联网医美该怎么走?
  3. identity的作用
  4. android studio之时间选择器和文本框操作
  5. 腾讯微博java(android) api
  6. 阿里云SSL证书到期,IIS导入新SSL证书教程
  7. 2021年电工(高级)考试题库及电工(高级)考试资料
  8. 从中专生到腾讯程序员,深圳男孩实力演绎逆风翻盘
  9. Java多线程导出,单线程压缩
  10. drf -------序列化组件