容器的通用功能:
-- 用默认构造函数构造空容器
-- 支持关系运算符: ==, !=, <, >, <=, >=
-- begin(), end(): 获得容器首,尾迭代器
-- clear(): 将容器清空
-- empty(): 判断容器是否为空
-- size(): 得到容器元素个数
-- s1.swap(s2): 将s1 和s2 两容器内容交换
相关数据类型:
-- S::iterator: 指向容器元素的迭代器类型
-- S::const_iterator: 常迭代器类型
顺序容器:
STL中的顺序容器: 向量(vector)双端队列(deque)列表(list)单向链表(forward_list)数组(array)
顺序容器的接口(不包含单向链表(forward_list)和数组(array)):
--构造函数
--赋值函数 assign
--插入函数 insert, push_front(list, deque), oush_back, emplace, emplace_front
--删除函数 erase, clear, pop_front (list, deque), pop_back, emplace_back
--首尾元素的直接访问 front, back
--改变大小 resize
顺序容器的比较:
——如果需要执行大量的随机访问操作,而且当扩展容器时只需要想容器尾部加入新的元素,就应当选择向量容器vector
——如果需要少量的随机访问操作,需要在容器两端插入或删除元素,则应当选择双端队列容器deque
——如果不需要对容器进行随机访问,但是需要在中间位置插入或者删除元素,就应当选择列表容器list或forward_list
——如果需要数组,array相对于内置数组类型而言,是一种更安全,更容易使用的数组类型
关联容器的分类和基本功能
-- 单重关联容器(set和map):键值是唯一的,一个键值只能对应一个元素
-- 多重关联容器(multiset 和 multimap): 键值是不唯一的,一个键值可以对应多个元素
-- 简单关联容器(set 和 multiset): 容器只有一个类型参数,例如set<K>, multiset<K>, 表示键类型
容器的元素就是键本身
-- 二元关联容器(map 和 multimap): 容器有两个类型参数,例如map<K,V>, multimap<K,V>, 分别表示键和附加数据的类型
容器的元素类型是pair<K,V>, 即由键类型和元素类型复合而成的二元组