顺序容器:
vector: 可变大小数组。支持快速随机访问。在尾部的位置插入/删除速度快。
deque: 双端队列。支持快速随机访问。在头尾位置插入/删除速度很快。
list: 双向列表。只支持双向顺序访问。在list中任何位置进行插入/删除操作速度都很快。
forward_list: 单向链表。只支持单向顺序访问。在链表任何位置进行插入/删除操作都很快。
array: 固定数组大小。支持快速随机访问。不能添加/删除元素。
string: 与vector相似的容器,但专门用于保存字符。随机访问块。在尾部插入/删除速度快。
//emplace_back,emplace,emplace_back对应的是push_front,insert,push_back,emplace版本在容器中直接构造元素,传递给emplace函数的参数必须与元素类型的构造函数相匹配
vector:
类型别名
iterator 此容器类型的迭代器类型。
const_iterator 此容器类型的const迭代器类型,可以读取元素,不可以修改元素。
receive_iterator
const_receive_iterator
sizt_type 无符号整数类型,足够保存此种容器类型最大可能容器的大小
difference_type 带符号的整数类型,足够保存两个迭代器之间的距离。
value_type 元素类型
reference 元素的左值类型:与value_type&含义相同
const_reference 元素的const左值类型:与const value_type&含义相同
成员函数
构造:
C c; 默认构造函数,构造一个空容器
C c1(c2); 构造c1,是c2的拷贝
C c(b, e); 构造c,将迭代器b和e指定的范围内的元素拷贝到c
C c{a, b, c, d...}; 列表初始化c
添加:
c.push_back(t) 在c的尾部创建一个值为t的元素,返回void
c.emplace_back(args) 在c的尾部创建一个由args创建的元素,返回void
c.insert(p, t) 在迭代器p指向的元素之前创建一个值为t的元素。返回指向新添加的元素的迭代器
c.insert(p, n, t) 在迭代器p指向的元素之前插入n个值为t的元素。返回指向新添加的第一个元素的迭代器,若n为0,则返回p
c.insert(p, b, e) 将迭代器b和e指定的范围内的元素插入迭代器p指向的元素之前。b和e不能指向c中的元素,返回指向新添加的第一个元素的迭代器;若范围为空,则返回p
c.insert(p, il) il是一个花括号包围的元素值列表。将这些给定值插入到迭代器p所指向的元素之前,返回指向新添加的第一个元素的迭代器;若列表为空,则返回p
访问:
c.front() 返回c中尾元素的引用。若容器为空,函数行为未定义
c.back() 返回c中首元素的引用。若容器为空,函数行为未定义
c.begin() 返回指向c中首元素的迭代器
c.end() 返回指向c中尾元素之后位置的迭代器
c.at(n) 返回c中下标为n的元素的引用,n是一个无符号整数。若n>=c.size(),则抛出一out_of_range异常
c[n] 返回c中下标为n的元素的引用,n是一个无符号整数。若n>=c.size(),则函数行为 未定义
删除:
c.pop_back() 删除c中尾元素。若c为空,则函数未定义。函数返回void
c.erase(p) 删除迭代器p所指定的元素,返回一个指向被删元素之后的元素迭代器,若c指向尾元素,则返回尾后迭代器,若p是尾后迭代器,则函数行为未定义
c.erase(b, e) 删除迭代器b和e所指定范围内的元素,返回一个指向最后一个元素之后元素的迭代器,若e本身就是尾后迭代器,则函数返回尾后迭代器
c.clear() 删除c中所有的元素。返回void
大小:
c.size() 返回容器元素的数目
c.empty() 如果容器中储存了元素,返回false,否则返回true
c.max_size() 返回容器中课保存最大元素的数目
c.resize(n) 调整c的大小为n个元素。若n<c.size(),则多出的元素被丢弃。若必须添加新元素,对新元素进行值初始化(0)
c.resize(n, t) 调整c的大小为n个元素。任何新添加的元素都初始化为值t
c.shrink_to_fit() 请将capacity()减少为size()相同大小
c.capacity() 不重新分配内存空间的话,c可以保存多少元素
c.reserve(n) 分配至少能容纳n个元素的内存空间
deque:
list:
forward_list:
添加:
c.push_front(t) 在c的头部创建一个值为t的元素,返回void
c.emplace_front(args) 在c的头部创建一个由args创建的元素,返回void
c.emplace_after(p, args) 使用args在p指定的位置之后创建一个元素。返回一个指向这个新元素的迭代器,若p为尾后迭代器,则函数行为未定义
c.insert_after(p, t) 在迭代器p指向的元素之后创建一个值为t的元素。返回指向新添加的元素的迭代器
c.insert_after(p, n, t) 在迭代器p指向的元素之后插入n个值为t的元素。返回指向新添加的第一个元素的迭代器,若n为0,则返回p
c.insert_after(p, b, e) 将迭代器b和e指定的范围内的元素插入迭代器p指向的元素之后。b和e不能指向c中的元素,返回指向新添加的第一个元素的迭代器;若范围为空,则返回p
c.insert_after(p, il) il是一个花括号包围的元素值列表。将这些给定值插入到迭代器p所指向的元素之后,返回指向新添加的第一个元素的迭代器;若列表为空,则返回p
删除:
c.pop_back() 删除c中尾元素。若c为空,则函数未定义。函数返回void
c.erase_after(p) 删除迭代器p所指定的元素,返回一个指向被删元素之后的元素迭代器,若c指向尾元素,则返回尾后迭代器,若p是尾后迭代器,则函数行为未定义
c.erase_after(b, e) 删除迭代器b和e所指定范围内的元素,返回一个指向最后一个元素之后元素的迭代器,若e本身就是尾后迭代器,则函数返回尾后迭代器
c.clear() 删除c中所有的元素。返回void
array:
string: