C++顺序容器

1.简介


除了固定大小的array外,其他容器都提供高效、灵活的内存管理

  • string 和 vector是连续内存,由下标访问非常快速,但是在中间删除和添加元素非常耗时,在一次插入或删除后,需要移动所有元素来保持连续存储
  • list 和 forward_list是添加和删除非常快速,但是,不支持元素的随机访问,访问一个元素,只能遍历整个容器;相对额外内存开销也比较大
  • deque 支持快速随机访问,在中间删除或插入代价较大,但是在两端添加或删除很快。
  • 除非有更好的理由,否则使用vector更好
  • 如果有很多小元素,且对额外开销有要求,则不要使用list和forward_list

1.头文件

#include <vector>
#include <list>
#include <deque>
#include <array>
#include <string>
#include <forward_list>

2.定义和初始化

3.赋值运算

4.添加元素

5.访问元素

6.删除

7.改变容器大小

8.所有容器适配器都支持的操作和类型

2.vector容器:

vector<int> a1;
vector<int> a2(3); //初始化3个元素,值为默认
vector<int> a3(3,5);  //初始化3个元素,值都为5
vector<int> a4{1,2,3,4};
vector<int> a5 = {4,5,6};
vector<int> b1(a4);
vector<int> b2;

b2.assign(a4.begin(), a4.begin() + 2); //将a4的前2个值赋给b2
b2.swap(a5); //比直接拷贝快的多,b2为4,5,6
swap(b2, a4); //b2和a4互换,类型需一致
//返回a的最后一个元素
a.back();

//返回a的第一个元素
a.front();

//返回a的第i元素,当且仅当a存在
a[i];

//清空a中的元素
a.clear();

//判断a是否为空,空则返回true,非空则返回false
a.empty();

//删除a向量的最后一个元素
a.pop_back();

//删除a中第一个(从第0个算起)到第二个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)结束
a.erase(a.begin()+1,a.begin()+3);

//在a的最后一个向量后插入一个元素,其值为5
a.push_back(5);

//在a的第一个元素(从第0个算起)位置插入数值5,
a.insert(a.begin()+1,5);

//在a的第一个元素(从第0个算起)位置插入3个数,其值都为5
a.insert(a.begin()+1,3,5);

//b为数组,在a的第一个元素(从第0个元素算起)的位置插入b的第三个元素到第5个元素(不包括b+6)
a.insert(a.begin()+1,b+3,b+6);

//返回a中元素的个数
a.size();

//返回a在内存中总共可以容纳的元素个数
a.capacity();

//将a的现有元素个数调整至10个,多则删,少则补,其值随机
a.resize(10);

//将a的现有元素个数调整至10个,多则删,少则补,其值为2
a.resize(10,2);

//将a的容量扩充至100,
a.reserve(100);
原文地址:https://www.cnblogs.com/penuel/p/11691030.html