走近STL- STL概论
【摘要】
文章目录
本专栏介绍STL的前世今生STL可不止有容器STL深入学习书籍推荐
本专栏介绍
我的STL专栏,将分为三个模块。
"走近STL"系列文章,讲的是STL的基础,主要是针对STL的常用容器Vector、List和Map快速上手,包括在使用过程中会遇到坑。我的目标是让初接触STL的朋友能快速上手。“走进STL”系列文章,讲的是STL的深...
本专栏介绍
我的STL专栏,将分为三个模块。
- "走近STL"系列文章,讲的是STL的基础,主要是针对STL的常用容器Vector、List和Map快速上手,包括在使用过程中会遇到坑。我的目标是让初接触STL的朋友能快速上手。
- “走进STL”系列文章,讲的是STL的深入部分,主要涉及STL的内存分配、容器源码分析、算法源码分析等六大块。(哪六大块?下面会讲到)。这个系列主要是针对想要深入学习STL或者想学习一下STL的编码技法(traits编码技法)的朋友。多学习源码的好处是显而易见的。
- “拥抱STL”系列文章,这个模块里面讲的是对“走进STL”模块学习的C++其他技术支持,毕竟没有一定的C++基础的话,直接看源码剖析是很痛苦的。
STL的前世今生
STL,虽然是一套程序库,但却不仅仅是一套一般印象中的程序库,而是一个具有划时代意义的、有着深厚理论基础的发明。
说是软件组件史上的一大突破,也当之无愧。
为了建立数据结构与算法的一套标准,降低其间的耦合关系,以及提升各自的交互性、弹性、独立性,C++社群中诞生了STL.
STL是一个开源项目,所以有很多个版本。在我的这个专栏中使用SGI STL版本,不论是符号命名,还是编码风格上,这个版本的可读性非常高。
STL可不止有容器
对于大部分接触过STL的人来说,对于STL的印象应该是极好的,不过大部分人可能也是简单的将容器和STL的全部画起了等号,最多再加上算法,毕竟我们使用STL常用到的也就那两套头文件。说实话我也前也是这么认为的。
其实STL提供了六大组件,容器和算法只是其中一部分,它们分别是:
容器、算法、迭代器、仿函数、配接器、配置器。
这些组件都是什么?
不要急,就算知道也再看一遍吧。
-
容器
-
各种数据结构,如Vector、List、Map,用于存放数据。
-
算法
-
各种常见算法如:排序、增删查等。从实现来看,STL算法属于泛型函数。
-
迭代器
-
很惊奇,迭代器不属于容器,也不属于算法。
-
扮演起容器与算法之间的“粘合剂”,是“泛型指针”。
-
原生指针可以作为一种迭代器,不过迭代器一般是以智能指针的形式存在的。
-
仿真函数
-
行为类似函数,从实现来看是一种重载了operator()的类或模板类。
-
函数指针可视为狭义上的仿真函数。
-
配接器
-
说来话长,一种用于修饰容器、迭代器、仿真函数的东西。
-
配置器
-
空间配置与管理,如果要深入了解STL代码,则这一块将会是奠基石一般的存在。
来看一下STL六大组件联合工作的图示:
STL深入学习书籍推荐
如果是为了应用的话呢,看我的“走近STL”系列就好了,我是个力求精简且有趣的人,博客也不会太冗长。
如果想深入了解STL,可以看我的“走进STL”系列和“拥抱STL”。
如果一定要自己看书且有一定的功底,推荐《STL源码剖析》
在网上找的基本是繁体版本,这套是简体带目录,画质也不错。
文章来源: lion-wu.blog.csdn.net,作者:看,未来,版权归原作者所有,如需转载,请联系作者。
原文链接:lion-wu.blog.csdn.net/article/details/105414735
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)