STL(Standard Template Library)标准模板库是 C++ 标准库中的一部分,标准模板库为 C++ 提供了完善的数据结构及算法。

STL 标准模板库包括三部分:容器、算法和迭代器。容器是对象的集合,STL 的容器有:vector、stack、queue、deque、list、set 和 map 等。STL 算法是对容器进行处理,比如排序、合并等操作。迭代器则是访问容器的一种机制。

在 C++ 定义数组时,我们必须提前知晓数组的大小,然后为了避免因为新数据的加入而导致越界,因而需要不断地进行越界检测,这样一来效率就大大降低了。而使用 STL 有一个非常大的优点就是不需要提前知道数组的大小,当有新元素加入时,容器会自动增大,删除元素时,容器会自动减小。

除此之外,STL 还提供了大量的算法用于操作容器。STL 具有可扩展性,也就是说可以增加新的容器和算法。

STL 基本容器可以分为:

  • 序列式容器,主要有 list、vector、deque;
  • 关联式容器,主要有 set、multiset、map、multimap;
    序列式容器可以像数组一样通过下标进行访问。关联式容器则是需要通过键值进行访问,关联式容器可以将任何类型的数据作为键值。

容器

类型

描述

vector

序列式容器

按照需要改变长度的数组

list

序列式容器

双向链表

deque

序列式容器

可以操作两端的数组

set

关联式容器

集合

multiset

关联式容器

允许重复的集合

map

关联式容器

图表

multimap

关联式容器

允许重复的图表