STL的组成结构

STL的组成 含义
容器 一些封装数据结构的模板类,例如vector向量容器、list列表容器
算法 STL 提供了非常多(大约 100 个)的数据结构算法,它们都被设计成一个个的模板函数,这些算法在 std 命名空间中定义,其中大部分算法都包含在头文件 中,少部分位于头文件 中。
迭代器 在C++ STL中,对容器中数据的读和写是通过迭代器完成的,扮演者容器和算法之间的胶合剂
函数对象 如果一个类将 () 运算符重载为成员函数,这个类就称为函数对象类,这个类的对象就是函数对象(又称仿函数)
适配器 可以使一个类的接口(模板的参数)适配成用户指定的形式,从而让原本不能在一起工作的两个类工作在一起。值得一提的是,容器、迭代器和函数对象都有适配器。
内存分配器 为容器类模板提供自定义的内存申请和释放功能,由于往往只有高级用户才有改变内存分配策略的需求,因此内存分配器对于一般用户来说,并不常用。

STL头文件

STL容器种类和功能

  • 序列容器
    • 主要包括vector向量容器、list列表容器、deque双端队列容器。之所以被称为序列容器,是因为元素在容器中的位置同元素的值无关,即容器不是排序的。将元素插入容器时,指定在什么位置,元素就会位于什么位置。
  • 排序容器
    • 包括set集合容器、multiset多重集合容器、map映射容器、multimap多重映射容器。排序容器中的元素默认是由小到大排序好的,即便是插入元素,元素也会插入到指定位置。所以关联容器在查找是具有非常好的性能。
  • 哈希容器
    • C++11新加入4种关联式容器,分别是unordered_set哈希集合、unordered_multiset哈希多重集合、unordered_map哈希映射、unordered_multimap哈希多重映射。和排序容器不同,哈希容器中的元素是未排序的,元素的位置有哈希函数确定。