前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《STL源码剖析》应该怎样读?

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

作者头像
用户6557940
发布2022-07-24 16:49:40
7600
发布2022-07-24 16:49:40
举报
文章被收录于专栏: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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档