顺序容器
- vector: 可变大小数组
- deque: 双端队列
- list: 双向链表
- forward_list: 单向联邦
- array: 固定大小数组
- string: 字符容器
特点
- 下标访问速度快
- 添加删除很慢
初始化
vector<noDefault> v1(10,init); //前面是大小,后面是初始值
拷贝初始
必须满足迭代器类型相同
list<string> authors = { "Milton","Shakespeare","Austen"};
vector<const char*> articles = { "a","an","the" };
list<string> list2(authors);
list<string> words(articles.begin(), articles.end());
array<int,10> ia1; //10个默认初始化的int
迭代器
范围是左闭合区间[begin,end)
while(begin!=end){
*begin=val; //范围非空,begin指向一个元素
++begin; //移动迭代器,获取下一个元素
}
添加元素
c.push_back(t); //容器后添加
c.push_front(t); //容器前添加
c.insert(p,begin,end); //p迭代器前添加begin迭代器到end的的所有元素
删除元素
//删除偶数元素,并复制奇数元素的值
vector<int> vi = { 0,1,2,3,4,5,6,7,8,9 };
auto iter = vi.begin();
while (iter!=vi.end())
{
if (*iter % 2) {
iter = vi.insert(iter, *iter); //复制当前元素
iter += 2; //向前移动迭代器,跳过当前元素以及插入到它之前的元素
}
else
{
iter = vi.erase(iter); //删除偶数元素
}
}