1 - STL简介

本文简要介绍了STL是什么,STL的编码规则及其包含的模块等。

C++标准库/STL

C++标准库,也称为STL(Standard Template Library),定义在std命名空间中,包含一些泛型容器和泛型算法,任何符合标准的编译器都应该带有这个库。性能是标准库中非常重要的一部分,标准库的目标就是让标准库容器和算法与手工编写的代码速度相当甚至更快。

在C++开发中,不会用标准库的人,会用标准库的人,懂标准库实现原理的人是完完全全的三个档次。因此,要想成为一个C++高手,让标准库提高我们的开发效率,必须会用标准库且懂一些它的实现原理。

编码原则

标准库大量使用了C++的模板功能和运算符重载功能。

模板

模板用于实现泛型编程(Generic Programming)。通过模板,才能编写适用于所有类型对象的代码,它可以在未知对象类型的情况下编写代码。整个标准库被分为六个部分,每个部分可以单独设计。例如vectormap是不同的数据结构,但它们的“迭代器”是相同的。

运算符重载

C++标准库大量使用了运算符重载,以实现一些必要的功能。

内容

标准库主要有以下六大组件:

  1. 容器(container):是一种数据结构,用于存储数据。有三类:顺序式容器、关联式容器和无序式容器。
  2. 迭代器(iterator):提供了可以访问任何容器的方法。
  3. 算法(algorithm):操作容器中数据的模板函数
  4. 仿函数(functor):行为类似函数,可作为算法的某种策略
  5. 适配器(adaptor):一种用来修饰容器或者仿函数或迭代器接口的东西
  6. 分配器(allocator):负责空间的配置与管理.

如何学习标准库

  1. 学习标准库一定要有全局观念,不要局限于单个容器,重点在于明白六大组件之间的联系。
  2. 如果当前任务以某个组件为重,还是重点学习它才好。

参考资料

  • 飘零的落花 - 现代C++详解
  • 【C++编程语言】之 C++的STL初始 基本概念 六大组件 容器 算法 迭代器 - 知乎 (zhihu.com)
  • C++20高级编程