Ch01-C++ 之 STL
June 20, 2022
STL 是 1979 年诞生,1998 年加入 cpp 标准库。C11 出来之前 boost 库是常见的智能指针库,c11 有自己的智能指针。且有多个 STL 版本,如 SGI STL
,GNU STL
。
Container
通过 Allocator
取得数据储存空 间,Algorithm
通过 Iterator
存取 Container
内容。Functor
可以协助 Algorithm
完成不同的策略的计算,Adapter
可以修饰或套接 Functor
。
STL 组件 | 说明 |
---|---|
Container | 一种 class template,常用的包括 array 、vector 、forward_list 、list 、deque 、set 、map 、multiset 、multimap 、unordered_set 、unordered_map 等。 |
Allocator | 一种 class template,实现了动态空间配置、空间管理、空间释放。 |
Iterator | 一种 class template,将 operator* 、operator-> 、operator++ 、operator-- 等相关操作进行了重载。 |
Algorithm | 一种 function template,常用的有 sort 、search 、copy 、erase 等。 |
Functor | 重载了 operator() ,使这个类具有了类似函数的行为。 |
Adapter | 用来修饰容器 (container) 或仿函数 (functor) 或迭代器 (iterator) 接口的东西,如 queue 和 stack 。 |