类型
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
list和forward_list成员函数算法
lst.merge(lst2, comp) 将来自lst2的元素合并入lst,lst和lst2必须是有序的。
元素将从lst2中删除,comp默认为<。
lst.remove(val) 调用erase删除掉与给定值相等的元素
lst.remove_if(pred) 删除谓词为真时的元素
lst.reverse() 反转元素的顺序
lst.sort(comp) 排序,默认为<
lst.unique() 删除同一值的连续拷贝,默认为 == ,或者使用给定的二元谓词。
splice成员
lst.splice(args)或flst.splice_after(args)
( p ,l st2 ) p是lst的迭代器或flst的首前迭代器,将lst2所有元素移动到lst的p之前或flst的p之后。
并将lst2中元素删除,lst和lst2不能是同一链表
( p , lst2 , p2) p2是lst2的有效迭代器,将p2所指元素移动到lst,或将p2之后元素移动到flst。lst可以相同
( p , lst2 , b , e ) b和e是p2的合法范围,将给定范围元素移动,lst2可以相同,但是p不能在相同范围。