首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《STL源码剖析》应该怎样读?

《STL源码剖析》应该怎样读?

作者头像
用户6557940
发布于 2022-07-24 08:49:40
发布于 2022-07-24 08:49:40
9280
举报
文章被收录于专栏:Jungle笔记Jungle笔记

作为C++开发者,我认为这本书是必读的(前提是必须知道STL容器的使用方法和常用的算法)。除了有感情地朗读以外,主要要了解以下知识点:

  • traits
  • allocator原理:比如16个自由链表是怎么回事,是如何向内存池申请内存的,容量不够时是如何扩容的?
  • 各个容器的底层原理,这是重点!还要知道,在具体场景下,如何选择哪些容器,可选的多种容器里,各个容器的性能如何?像map和set底层的红黑树的原理,哈希表的原理,deque的原理等等
  • 仿函数:这部分篇幅很小,看起来相对轻松
  • 迭代器:要结合和容器,理解各种迭代器的底层原理
  • 算法:需要知道常用的算法,还需要了解Lambda表达式,因为算法常常结合Lambda一起使用

如果一上来就看书,可能比较吃力,一方面,正如这本书所提及的,需要C++基础。另一方面,stl涉及模板、萃取等C++的"奇淫技巧",还涉及算法的实现,比较复杂。所以我强烈推荐结合侯捷大师的视频:STL与泛型编程(B站竟然没有了。。。),侯捷大师结合源码,入木三分地讲解,令人印象深刻。跟大师学习,思维会提升一个层次!

最后是应用,我推荐两种: 一是自己尝试编码实现一些简单的容器,比如array,list,allocator。这些我也自己尝试过,看似简单,实现起来才发现简单的容器门道也挺多。不过总体来说过程很有趣。据说每个C++程序员都会自己实现一套stl,github上的确有很多个人版本的stl,看来我还不算,哈哈哈

二是leetcode刷题,很多题目都会用到容器,除开最常用的vector,可以针对性的训练比如哈希表、map标签的题目,会加深对stl容器的理解。有的题目甚至考察到了各类容器的性能,比如高频考题LRU的实现

结合我最近的工作,除开vector,为了查找效率unordered_set和unordered_map我会优先考虑。代码里常常把STL、lambda、算法和C++11/14特性结合在一起。

有时候常常感觉功力还不够,时刻都要学习和实践才行鸭!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Jungle笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
读完两遍《STL源码剖析》后,我发现了一些辛秘
对于每一位学习 C++ 的小伙伴来说,STL 不可谓不重要,特别是那些为我们造好的底层轮子比如容器、算法等更是一件利器,比如在一些 OJ 平台,用 STL 下的算法刷题简直不要太爽,谁用谁知道。
拓跋阿秀
2021/04/26
3.6K0
读完两遍《STL源码剖析》后,我发现了一些辛秘
【笔记】C++标准库: 体系结构与内核分析(上)
这篇是这段时间看的侯捷关于C++标准模板库的课程《C++标准库: 体系结构与内核分析》的笔记, 课程内容大家自己找吧. 这个课程质量很高, 除了介绍STL的基础操作外, 更进一步介绍了STL的工作原理并展示了部分源代码. 尽管这门课所介绍的都是较老版本的STL内容, 但是毕竟底层思想多年来也没有太大改变, 对今天仍有很大意义.
ZifengHuang
2021/12/18
1.3K0
【笔记】C++标准库: 体系结构与内核分析(上)
STL源码剖析_各容器一览
STL中的容器非常好用,是已经实现好的各种数据结构,并且效率也比较高。 掌握各个容器的特性,才能在不同情况下选择合适的容器并正确使用。 本文简单总结了STL的学习步骤,并整理了各容器的特性、适用情况,不涉及具体细节。
yifei_
2022/11/14
4080
STL源码剖析_各容器一览
深入浅出 C++ STL:解锁高效编程的秘密武器
C++ 标准模板库(STL)是现代 C++ 的核心部分之一,为开发者提供了丰富的预定义数据结构和算法,极大地提升了编程效率和代码的可读性。理解和掌握 STL 对于 C++ 开发者来说至关重要。以下是对 STL 的详细介绍,涵盖其基础知识、发展历史、核心组件、重要性和学习方法。
平凡之路.
2025/06/02
1740
深入浅出 C++ STL:解锁高效编程的秘密武器
STL库简述
其中后四个类主要为前两个类服务。 其中使用频率最高的就是容器库,迭代器库,算法库。容器库为我们提供了存储数据的数据结构,算法库则是我们操作数据结构的算法,迭代器库作为容器库和算法库的黏合剂。
全栈程序员站长
2022/11/07
5200
【C++】<STL部分>:STL标准模板库概要
STL(standard template libaray-标准模板库),是C++标准库的重要组成部分,包含了很多常用的数据结构和算法。
Skrrapper
2025/04/08
2620
【C++】<STL部分>:STL标准模板库概要
C++ STL精通之旅:向量、集合与映射等容器详解
STL 作为一个封装良好,性能合格的 C++ 标准库,在算法竞赛中运用极其常见。灵活且正确使用 STL 可以节省非常多解题时间,这一点不仅是由于可以直接调用,还是因为它封装良好,可以让代码的可读性变高,解题思路更清晰,调试过程往往更顺利。
Srlua
2024/03/01
3580
C++ STL精通之旅:向量、集合与映射等容器详解
深入理解STL库_STL文件格式的工作原理
上期说过C++这块面试问的东西也蛮多,简历上只要出现C++这几个字,那么STL库就是必问。
全栈程序员站长
2022/11/03
7140
深入理解STL库_STL文件格式的工作原理
STL源码剖析_stl编程指令详解
STL(Standard Template Library),即标准模板库,是一个高效的C++程序库。包含了诸多在计算机科学领域里常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。其核心思想就是泛化编程(generic programming),在这种思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。
全栈程序员站长
2022/09/20
7770
STL源码剖析_stl编程指令详解
【C++100问】深度总结STL基本容器的使用
文章首发于本人CSDN账号:https://blog.csdn.net/tefuirnever
我是管小亮
2020/04/20
1.3K0
呕心沥血一个月,为小白新手准备的C/C++ Linux求职版学习路线
他是非科班转到计算机来的,所以基本功比较差,我专门花了一个多月写了这篇学习路线,全文超过8000字,文章润色了好久,配套的资料全部找齐了。
拓跋阿秀
2021/10/20
1.6K0
C++ 手写实现 unordered_map 和 unordered_set:深入解析与源码实战
在 C++ 的标准模板库(STL)中,unordered_map 和 unordered_set 是两个常用的哈希容器,它们在底层以哈希表作为数据结构实现,拥有常数时间复杂度的插入和查找性能。然而,这些强大容器的底层是如何构建的?本博客将带你从源码出发,亲手实现一套 unordered_map 和 unordered_set,并解析每一行背后的设计思考。
用户11289931
2025/06/11
1500
从零开始学C++之STL(一):STL六大组件简介
s1mba
2017/12/28
4.2K0
从零开始学C++之STL(一):STL六大组件简介
【C++】了解一下STL
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。
zxctscl
2024/03/12
7380
【C++】了解一下STL
C++ STL源码剖析之Traits编程技法
在 STL 编程中,容器和算法是独立设计的,即数据结构和算法是独立设计的,连接容器和算法的桥梁就是迭代器了,迭代器使其独立设计成为可能。如下图所示:
公众号guangcity
2019/10/12
1.4K0
C++ STL源码剖析之Traits编程技法
开发成长之路(6)-- C++从入门到开发(C++知名库:STL入门·容器(一))
其实我刚开始也没想到会写这么快,明显后面几篇的数据跟不上第一篇啦。可能是有一部分朋友对CSDN还不是很了解吧。 在文中的蓝字是可以点击的超链接,在文章标题下面有文章所属专栏,也是可以点击的,我这一系列的文章都在一个专栏下: 开发成长之路 你们可以慢慢看,不懂的随时私信我,我在CSDN上还是比较活跃的,一般一个小时内都能回复。
看、未来
2021/09/18
3680
C++之STL标准模板库——从入门到精通
通俗说:STL是Standard Template Library(标准模板库),是高效的C++程序库,其采用泛型编程思想对常见数据结构(顺序表,链表,栈和队列,堆,二叉树,哈希)和算法(查找、排序、集合、数值运算…)等进行封装,里面处处体现着泛型编程程序设计思想以及设计模式,已被集成到C++标准程序库中。 具体说:STL中包含了容器、适配器、算法、迭代器、仿函数以及空间配置器。 STL设计理念:追求代码高复用性以及运行速度的高效率,在实现时使用了许多技术。
海盗船长
2020/08/27
1.1K0
STL 总结与常见面试题
为了建立数据结构和算法的一套标准,并且降低他们之间的耦合关系,以提升各自的独立性、弹性、交互操作性(相互合作性,interoperability),诞生了STL。
C语言与CPP编程
2020/10/16
9920
【C++】— 一篇文章让你认识STL
 STL是Standard Template Library的简称,中文名是标准模板库,是C++标准库的重要组成部分,它不仅是一个可以复用的组件库,而且还是包罗了数据结构与算法的软件框架。
_孙同学
2024/10/23
8680
【C++】— 一篇文章让你认识STL
STL
适配器,在STL中扮演着转换器的角色,本质上是一种设计模式,用于一种接口转换成另一种接口,从而使原本不兼容的接口能够很好地一起运作。
对弈
2019/09/04
9490
相关推荐
读完两遍《STL源码剖析》后,我发现了一些辛秘
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档