七年之旅

STL 漫谈

2018-05-21  本文已影响144人  2ce0a88c0452

STL 是 Standard Template Library 的简称,中文名标准模板库,惠普实验室开发的一系列软件的统称。STL 现在是 C++ 标准的一部分,所以正常的 C++ 编译器都包含相应的库文件,可以在编程时直接使用。由于 C++ 标准中只规定 STL 中应该包含接口,不同的编译器在实现这些功能时会有细节上的不同。

STL 版本

目前的编译器中所带的 STL 源代码,都是经过很多工程技巧优化,所以可读性很差。推荐阅读一些早期的版本,比如 SGI STL v3.0等。同时可以搭配《STL 源码剖析》阅读。

STL 组成

STL可分为容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数(functors)六个部分。

image.png

空间配置器(allocator)

内存分配相关,漫谈中不关注

容器(containers)

容器是指一些 STL 中一些常用的数据结构,取名为容器是应为,这些数据结构可以介绍不同的数据类型。在实现上使用了类模板。

image.png

简单容器 Simple containers

pair

序列式容器 Sequence containers

array

vector

Associative containers

map

set

Unordered associative containers

unordered_map、unordered_mulitmap、unordered_set、unordered_multiset 都是通过 hash 实现的版本,查询时速度比红黑树版本效率高。

算法(algorithms)

STL 中与算法相关的文件有<algorithm>,<numeric>和<functional>。下面介绍一些在 ACM 中常用的算法。

sort

这里介绍一些排序相关的算法。

permutation

排列相关的算法。

search

参考

文档软件

通过安装Zeal或者Dash等软件,可以快速查阅相关的语法手册。

image.png
上一篇下一篇

猜你喜欢

热点阅读