1、容器特性

1)顺序序列

顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。

2)动态数组

支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。操供了在序列末尾相对快速地添加/删除元素的操作。

3)能够感知内存分配器的

容器使用一个内存分配器对象来动态地处理它的存储需求。

2、基本操作

a. 头文件#include<vector>

b. 创建vector对象:vector dp;

c. 尾部插入数字:vec.push_back(a);

d. 使用下标访问元素,cout<<dp[0]<<endl;记住下标是从0开始的。

使用迭代器访问元素.

vector::iterator it;

for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;

e. 插入元素: vec.insert(vec.begin()+i,a);在第i个元素后面插入a;

f. 删除元素: vec.erase(vec.begin()+2);删除第3个元素

vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

h. 向量大小:vec.size();

g. 清空:vec.clear();//清空之后,vec.size()为0

3、 vector容器的初始化

vector的使用首先需要加一个头文件#include<vector>;

vector<int> a; 最一般的初始化方法,就是定义一个容器a;

vector<int>a(n); 定义一个长度为n的容器a;

vector<int> a[n]; 声明了一个包含n空向量的数组。

vector<int>a(n,x); 定义一个长度为n,每个值都初始化为x;

vector<int> a{n}; 声明了一个包含单个元素n的向量

除此之外,还可以定义一个vector<int>a[10]; 也就是可以定义一个vector数组,里面的每个元素都是vector容器

4、 常见定义方法:

(1) vector<int> a(5); //定义了5个整型元素的向量(<>中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的.

(2)vector<int> a(5,1);//定义了5个整型元素的向量,且给出每个元素的初值为1

(3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值

(4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素

(5)int b[7]={1,2,3,4,5,9,8}; vector<int> a(b,b+7); //从数组中获得初值