欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > STL-开篇啦~

STL-开篇啦~

2024/11/29 19:27:44 来源:https://blog.csdn.net/weixin_44684401/article/details/144122239  浏览:    关键词:STL-开篇啦~

作者有话要说

本文写于阅读和实操STL一段时间之后。之所以选择当前时机学习,是为了先对STL有一个整体了解。如果一个部分一个部分学习STL的六大组件,很难理解其设计的巧妙之处。

因此,笔者仅对每个组件的一部分进行分析,并试图掌握不同组件的关联,试图理解STL设计思想。

结果也不出所料,经过前后代码对比分析,一些STL设计用心豁然开朗。

笔者将通过一个极简板的listSTL来向各位展示STL的设计思想。在理解这些设计思想后,其他的容器、算法等功能的实现,不过是时间的问题。

笔者永远坚定地认为,思想最核心,其他的交给时间。

在listSTL项目中,我们仅将实现如下功能:

(1)一个极简的配置器(不使用内存池)
(2)通用的迭代器(具体的迭代器设计与容器直接相关)
(3)完整的list容器(list的具体迭代器设计、list节点、list容器模板等)
(4)部分算法
需要注意的是:相比前三部分的强耦合,第四部分的设计显得相对独立。

讲到这里,你可能会问:

不是六大组件吗?怎么才四个?实际上,六大组件的最后两个:仿函数和配接器,更多是作为前四个组件的辅助工具。在当前极简listSTL项目中,并不能完全体现其辅助工具的妙处。但我相信,当你理解STL设计理念后,再来攻克这些知识,将轻而易举。

大家使用最多的应该是vector容器,那为何不从大家常用的vector入手,开启这个小项目呢?
vector虽然是我们最常用的容器之一,但由于其内部实现较为简单,从而容易让人忽略迭代器设计的理念。

那为何不选用较为复杂的关联式容器呢?
较为复杂的关联式容器,底层采用红黑树机制,原理较为复杂,这会让我们把精力都浪费在与STL设计核心无关的工作上。虽然我们选用的list容器归属序列容器,不能体现关联式容器特性。但就整个STL设计思想而言,list就足够了。

作者水平有限,欢迎批评指正(满满求生欲)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com