【C/C++】标准库, STL, Boost等的联系

Backto C/C++ Index


标准库

最最开始, 只有 C 语言. 使用着使用着, 一些常用的功能被写成了库. 各种组织都是自己私有的库. 后来为了方便统一使用和交流, 就制定了标准. 标准里的库, 就是 C 标准库. 后来, C++ 引入了 class 扩展了C, 也就一起随着语言制定了更广泛更强大的标准库. 可以认为标准库是语言的一部分, 是核心的部分, 当然不可能面面俱到, 也不可能在具体场景下处处最优, 于是也有很多优秀的第三方库作为替代和补充, 佼佼者比如 Boost.

C 标准库

大约 15 个文件: assert.h, ctype.h, error.h, float.h, limits.h, locate.h, math.h, setjmp.h, signal.h, stdarg.h, stddef.h, stdio.h, stdlib.h, string.h, time.h
基本上看名字就知道作用.

C++ 标准库

C++标准库有大约 80 个文件, Linux 下可在 /usr/include/C++/4.8/ 下查看.
按内容分为10类:
C1.语言支持 C2.输入/输出 C3.诊断 C4.一般工具 C5.字符串
C6.容器 C7.迭代器支持 C8.算法 C9.数值操作 C10.本地化

80 个标准库文件都没有扩展名, 其中

  • 18个提供了C库的功能。 #include <cname> 代替 C 中的 #include "name.h"
  • 大部分实现了C++ 的扩展数据结构和算法等, 这部分实现被称为 STL.
  • 一小部分实现了IO, 本地化等功能

为了保证对 C 的绝对兼容, C 的习惯也保留着. 为了确保调用的是 C++ 标准库里的内容, 最好在使用时, 加上namespace约束, std::

STL

STL即标准模板库(Standard Template Library. 它包括6大类组件:算法(Algorithm)、容器(Container)、空间分配器(Allocator)、迭代器(Iterator)、函数对象(Functor)、适配器(Adapter)。

Container通过Allocator取得数据存储空间,Algorithm通过Iterator存取Container内容,Functor协助Algorithm完成不同的策略变化, Adapter修饰或套接Functor. – 侯捷《STL源码剖析》

STL 应用泛型实现了C++的设计思想. 很巧妙, 但是也被诟病为over-smart.

Boost

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护。Boost 相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。
boost主要包含一下几个大类:字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数学相关、纠错和测试、数据结构、输入/输出、跨语言支持、内存相关、语法分析、杂项。 有一些库是跨类别包含的,就是既属于这个类别又属于那个类别。


Ref

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值