【有点狂的手撕STL】STL源码剖析精读 000
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相关推荐
- string list 查找_手撕java集合源码——List篇
阅读list集合观察它们底层是如何实现的,以及集合面试中提出的问题进行实践. list集合中常用的类为Arraylist.LinkedLIst. 两者的区别 区别 Arraylist LinkedLi ...
- 手撕Java集合源码——list集合
Java集合(一)--LinkedList和ArrayList源码 一.集合 集合主要分为两组(单列集合,双列集合) 单列集合:存放单个元素 Collection:两个重要的接口 List Set A ...
- C++(STL):11---vector源码剖析
一.vector概述 vector的使用语法可以参考文章之前的几篇文章,总的来说:vector是可变大小数组 特点: 支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢 元素保存在连续的内存空间 ...
- 手撕TreeSet底层源码
public interface SortedMap<K,V> extends Map<K,V> {}public interface NavigableMap<K,V& ...
- 万字长文炸裂!手撕 STL 迭代器源码与 traits 编程技法
大家好,我是小贺. 1. 前言 天下大事,必作于细. 源码之前,了无秘密. 上一篇,我们剖析了 STL 空间配置器,这一篇文章,我们来学习下 STL 迭代器以及背后的 traits 编程技法. 在 S ...
- 【STL源码剖析】list模拟实现 | 适配器实现反向迭代器【超详细的底层算法解释】
今天博主继续带来STL源码剖析专栏的第三篇博客了! 今天带来list的模拟实现! 话不多说,直接进入我们今天的内容! 前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://b ...
- 《STL源码剖析》相关面试题总结
一.STL简介 STL提供六大组件,彼此可以组合套用: 容器 容器就是各种数据结构,我就不多说,看看下面这张图回忆一下就好了,从实现角度看,STL容器是一种class template. 算法 各种常 ...
- STL源码剖析学习七:stack和queue
STL源码剖析学习七:stack和queue stack是一种先进后出的数据结构,只有一个出口. 允许新增.删除.获取最顶端的元素,没有任何办法可以存取其他元素,不允许有遍历行为. 缺省情况下用deq ...
- 《STL源码剖析》学习-- 1.9-- 可能令你困惑的C++语法1
最近在看侯捷的<STL源码剖析>,虽然感觉自己c++看得比较深一点,还是感觉还多东西不是那么明白,这里将一些细小的东西或者概念记录一下. 有些东西是根据<C++编程思想>理解的 ...
最新文章
- 趣图:好好干,今天再加个班
- Android安全问题 抢先接收广播 - 内因篇之广播接收器注册流程
- sqlserver 中统计信息语句
- jclouds_使用jclouds在S3上分段上传
- C#学习笔记(十一):动态类型
- C/C++ Native 包大小测量
- 车辆撞人有全险但是是全责,车主不愿出钱垫付医药费,该怎么办?
- 阿里云加速器拉取tomcat
- STC8PROG - Linux下的 STC8G STC8H 烧录工具
- 思科网络工程师面试题
- 基于STM32的PWM电机驱动TB6612、A4950
- 计算机截图工具无法运行,重装win7系统后打开截图工具显示“截图工具当前未在计算机上运行”如何解决...
- Objective C 类变量的声明
- 史上最全Elasticsearch学习
- 【历史上的今天】11 月 20 日:微软发布 Windows 1.0;Lotus Notes 发明者出生;奔腾4 诞生
- 电子商务平台简介——Makingware
- PHP源码让我帮你百度一下专治伸手党
- python在pip安装pytorch时候killed
- 炫美泡泡飞舞特效(源代码+效果)
- DVB-S相关知识第二章-卫星接收锁频参数介绍