容器:管理特定类型的对象的集合。
迭代器:迭代对象集合的元素。屏蔽了底层容器的实现。
算法:操作对象集合的元素,查找,排序,修改等。算法不直接操作容器,通过迭代器操作。
STL基于数据和操作分离的原则,容器管理数据,算法操作数据,两者通过迭代器结合。
顺序容器
array,vector,deque,list,forward_list(一般用数组或链表实现)
关联容器
有序的,set,multiset,map,multimap,在逻辑上可认为是顺序容器,一般用排序二叉树实现
无序(关联)容器
unsordered_set,unordered_multiset,unsortered_map,unsortered_multimap,一般用hash表实现
vector
动态数组,支持随机访问,在尾后添加删除元素较快,在中间添加和删除元素较慢,可能需要改变容器的容量。
size() is provided for any container class except singly linked lists (class forward_list).
deque(读作check)
双端队列,可在两端增长的动态数组,在首尾插入比较快,在中间插入比较慢。
array
固定大小的数组,只可改变元素的值,在创建的时候指定大小。支持随机访问。默认以类型的默认构造函数出初始化,内置类型初始值未定义。创建时需指定大小,作为类型的一部分。
list
双向,每个元素保存前驱和后继的链接,插入和删除较快,不支持随机访问。
forward_list
单向,每个元素只有后继的链接,不支持push_back,size。