STL源码分析一: STL 概论

前言

现在的工作我不是很喜欢,就是在造轮子,而且预计以维护为主,造轮子为辅。既然涉及C++,我是准备把经典书籍都看一遍,前几年工作内容不同,使用语言也不同,也就看点皮毛《C++ Primer》都没看完。

按理说应该先读其他书,敲下少说上万行代码再来看stl,特别是应该先用再看实现,可我发现那样效率不高,不如跟着代码,学与用结合。

学习编程最重要的一个步骤是实践,其次是思考。希望阅读中自己牢记这句话。

此次分析以侯捷老师的《STL 源码剖析》为根本,自己也不打算超出书本范围。

备注:该篇需要在分析完之后修改完善

STL概论

STL是放之四海而皆准(基于泛型编程)的轮子(库)。

STL 六大组件:
STL 六大组件的交互关系

STL 六大组件的交互关系:
Container 透过 Allocator 取得数据储存空间,Algorithm 透过 Iterator 存取 Container 内容,Functor 可以协助 Algorithm 完 成不同的策略变化,Adapter 可以修饰或套接 Functor

大概就是这么回事:
王老板有一大片地,想用来种植各种农作物、水产品或者干脆盖房子。
老王找到可靠的土地管理人员(Allocator)对土地规划分配。
老王雇了农民、渔民、建筑师(Container)来干活。
老王想提高收益,于是请来了各类专家(Algorithm)如农业学家、建筑设计师来指导完成工作。
术业有专攻,农业学家可能需要地质、气象学家给出的策略(Functor)。
无论专家还是老王,他们关心的是具体的东西,譬如是小麦还是玉米,是鱼虾还是螃蟹。农民、渔民提供一个库存或账本,这样无论是专家还是老王不用时刻跟农民、渔民打交道,直接访问他们的库存或账本(Iterator)。
个体户、无业游民,要么看到了商机,要么出于无奈他们选择了从事农业劳动。聪明的他们发现种植按照农民、渔夫的套路来就行了,利润独立结算。这样他们就成了伪农民、伪渔夫,外界不知道他们的真实情况,还以为是新新人类(Adapter),他们自己当然就可以随时换汤不换药。

stl_config.h

一群脑洞的专家提出了许多语言特性,一群苦逼的编译器开发人员天天加班,改不完的bug,新增的鬼畜。无奈之下决定,先完成基本的功能,特别偏僻的功能就先放一放,老子没空啊!!!
于是stl_config.h对编译器说,你能就你上,否则就拉倒。

1.9.1代码我在XCode上测试,基本都不通,根据错误稍微调调就好了。模板那些偏僻的特性啊,最好少用吧。。
1.9.4-1.9.6 主要讲了操作符重载,还是值得一读的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值