1.各类容器适用情形一览:
vector:通常就用它。随机访问
list:中间操作多。
deque:两头操作多。随机访问
forward_list:中间操作多。
2.容器构造初始化一览:C为容器类型名、T为元素类型、c为容器对象。
2.1容器构造函数:
C<T> c; // 普通初始化
C c(c2); // 利用c2创建容器对象副本,要求容器及元素类型一致。
C c(b,e); // 利用其它对象的迭代器,复制从b到e之间元素。
C c(n,t); // 用n个值为t的元素创建容器c。值类型与容器元素类型相容。
C seq(n); // 创建有n个值初始化的容器,
只适用于顺序容器。
2.2 容器其他定义:
C c1=c2; // 利用c2创建容器对象副本,要求容器及元素类型一致。
C c{a,b,c...}
C c={a,b,c...} // 元素类型相容 也就数组用用吧 新标准
3.常用迭代器操作:
*iter // 返回迭代器值
iter->mem // 类成员属性引用 就像指针一样的操作 等效于(*iter).mem
++iter / iter++
--iter / iter--
iter1==iter2 //
iter1!=iter2 // 逻辑运算
4.仅用于vector和deque容器的迭代器操作:
iter+n、iter-n;
iter1+=iter2; //自加
iter1-=iter2; //自减
iter1-iter2; //相减
>,>=,<,<=; // 逻辑运算
5.顺序容器中添加、访问元素操作:
c.push_back(t); // 在容器c尾部添加值为t的元素
c.push_front(t); // 在容器c前端添加值为t的元素
//以下只适用于list和deque容器类型
c.insert(p,t); // 在迭代器p所指向的元素前面插入值为t的元素
c.insert(p,n,t); // 在迭代器p所指向的元素前插入n个值为t的新元素
c.insert(p,b,e); // 在迭代器p所指向的元素前面插入由迭代器b和e标记的范围内的元素
//以下紧=只适用于vector和deque容器类型
c[n] \ c.at(n)
6.顺序容器删除操作
c.erase(p) // 删除指迭代器p指定的元素 返回指向下一个元素的迭代器
c.erase(b,e) // 删除迭代器之间的元素 返回指向下一个元素的迭代器
c.clear() // 清空元素
c.pop_back() // 删除容器末尾元素
c.pop_front() // 删除容器首部元素
只适用于list或deque