类型
vector:可变大小数组。支持快速随机访问。在尾部之外插入或删除较慢
deque:双端队列。支持快速随机访问,在头尾插入和删除快
list:双向链表。只支持双向顺序访问。插入删除快
forward_list:单向链表,仅能单向顺序访问
array:固定大小数组。支持快速访问。不能添加或删除。定义时应指定容器大小,如:array<int , 10>
string:与vector类似,保存字符。
assign赋值
seq.assign(b,e); //b和e为迭代器,将seq替换为b和e所表示范围中的元素,不能指向seq中元素
seq.assign(il); //将seq中元素替换为il中元素
seq.assign(n,t); //将seq中元素替换为n个值为t的元素
添加元素
push_back(t) //在尾部创建一个值为t的元素,返回void
emplace_back(args) //在尾部创建一个由args创建的元素,返回void
push_front(t) //在头部创建,vector和string不支持
insert(p,t) //在迭代器p指向的元素之前创建一个值为t的元素,返回新添加的元素的迭代器
emplace(p,args) //同上
insert(p,n,t) //在迭代器p之前插入n个值为t的元素,返回指向新添加的第一个元素的迭代器
insert(p,b,e) //将b和e指定范围内元素插入到迭代器p指向的元素之前,b和e不能指向自己的元素。
返回指向新添加的第一个元素的迭代器
insert(p,il) //il为花括号包围的元素值列表,将这些给定值插入到p之前,返回新添加的第一个迭代器。
删除元素
pop_back() //删除尾元素,若列表为空则函数行为未定义,返回void
pop_front() //删除首元素,vector和string不支持
erase(p) //删除迭代器p所指定的元素,返回一个纸箱被删元素之后元素的迭代器,
//若p指向尾元素,则返回尾后迭代器。若p为尾后迭代器,则函数行为未定义
erase(b,e) //删除迭代器b和e所指定范围内的元素,返回一个指向最后一个被删元素的迭代器。
//若e为尾后迭代器,则返回尾后迭代器
clear() //清空容器,返回void
单向链表操作
before_begin() //返回首前迭代器,即链表头指针
cbefore_begin() //返回const类型首前迭代器
insert_after(p,n,t) //在迭代器p后插入n个元素t,n可以不用,返回一个指向最后一个插入元素的迭代器
insert_after(p,b,e) //在p之后插入b到e的元素
insert_after(p,il) //在p后插入il,il为花括号列表
emplace_after(p,args) //使用args在p指定的位置之后创建一个元素,返回指向这个新元素的迭代器
erase_after(p) //删除p指向的位置之后的元素,返回指向被删元素之后元素的迭代器
erase_after(b,e) //删除b之后(不含b)到e之间的元素
其他操作
resize(n) //调整容器大小为n,新添加的初始化为0,多的丢弃,不适用于array
resize(n,t) //调整容器大小为n,新添加的元素初始化为t
容器大小管理
capacity() // 不重新分配内存空间,c可以保存的元素数量 只适用于vector和string
reserve(n) //分配至少容纳n个元素的空间 只适用于vector和string