9.1
vector可变大小数组,支持快速随机访问,在尾部之外的位置插入或删除元素可能很慢
deque 双端队列,支持快速随机访问,在头尾位置插入或删除数据很快。
list 双向链表。支持快速随机访问,在list中任何位置进行插入删除操作。
forward_list 单向链表。只支持单向顺序访问,在链表中任何位置插入删除顺序很快。
array固定大小数组,支持快速随机访问,不能添加或删除元素。
string 与vector类似的容器,但是专门保存字符。随机访问块,在尾部插入删除速度快。
通常,使用vector是最好的选择,除非有很好的理由选择其他容器。
容器的操作:类型别名iterator const_iterator size_type difference_type value_type reference const_reference ;构造函数C c; C c1(c2); C c(b,e);C c{a,b,c...}; 赋值与swap c1=c2; c1={a,b,c...}; a.swap(b); swap(a,b);大小 c.size(); c.max_size(); c.empty() 添加删除元素 c.insert(args); c.emplace(inits); c.erase(args); c.clear(). ==, !=, <=,<, >, >=;获取迭代器 c.begin(),c,end)_,c.cbegin(),c.cend(); reverse_iterator const_reverse_iterator c,rbegin(),c.rend() c.crend(),c,crbegin().
assign操作(顺序容器),允许从一个不同但相容的类型赋值,或者从容器的一个子序列赋值。
list<string> names;
vector<const char*> oldstyle;
names=oldstyle;//错误,类型不匹配
names.assign(oldstyle.cbegin(),oldstyle.cend());