为实现方便实用的标准库,表达容器和算法等抽象概念,STL融合了OO(object oriented)和GP(generic programming),并通过traits编程技法,实现了完善的STL框架。

六大组件

STL的的六大组件互相配合,彼此组合套用:

  1. 分配器allocator
    负责动态空间配置、管理和释放。

  2. 容器 container
    各类数据结构,包括vector, list, deque, stack, queue, map, set等。

  3. 迭代器 iterator
    是一种泛型指针,根据容器类型的不同,共有五种,存在继承关系。
    从实现角度看,迭代器是将 operator*, ->, ++, – 等指针相关操作进行重载的 class template。容器大多需要定义自己的迭代器,c++中原生指针也是一种迭代器。

  4. 算法 algorithm
    针对容器的各种算法,排序、查找、统计等,其实是function template。

  5. 仿函数 functor
    仿函数实际定义为class,但行为类似函数,作为算法的某种比较或行为策略。
    从实现的角度看,仿函数是重载了 operator() 的class 或 class template。一般函数指针可视为狭义的仿函数。

  6. 适配器 adaptor
    一种用来修饰容器仿函数迭代器接口的东西。

六大组件的关系

LightSTL:(1)STL架构分析

相关文章:

  • 2022-02-23
  • 2021-07-03
  • 2021-04-22
  • 2021-09-04
  • 2021-09-21
  • 2021-12-11
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-06
  • 2021-06-24
  • 2021-05-15
  • 2022-01-07
  • 2021-06-25
相关资源
相似解决方案