一、简介
同一种类型对象的一个集合,每一个对象都有一个整型的索引,也就是顺序容器。
二、初始化
<1> 在定义的时候进行初始化:
1. vector <int> a; 构造一个空的容器
2. vector <int> a(n); 有 n 个元素,每个元素都是默认值,跟类型相关(如:int、0; string、“”)
3. vector <int> a(n, value); n 个元素,每个元素都是指定的 value 值
<2> 用数组进行初始化
int a[3] = {1, 2, 3};
for(int i=0; i<3; i++){
vec.push_back(a[i])
}
vector<int>vec(&a[0], &a[3]);
vector<int>b;
b.reserve(10);
int array[3] = {1, 2, 3};
b.insert(b.begin(), &array[0], &array[3]);
三、方法
1、push_back
2、pop_back
3、size
4、capacity
5、empty
6、reserve(n)
其中值得注意的是 reserve 这个方法,他会强制把容量改为至少为 n 的大小,这样可以避免很多没有必要的空间重新分配。
vector<int>b;
b.reserve(1000);
四、遍历与修改
1、使用 size 进行遍历
vector<int>a(10);
cout<<"a.size: "<< a.size()<<endl;
for(vector<int>::size_type i = 0; i<a.size(); i++){
cout<<"i: "<<a[i]<<endl;
}
2、使用 iterator 进行遍历
for(vector<int>::iterator iter = a.begin(); iter!=a.end(); iter++){
cout<<"i: "<<*iter<<endl;
}
3、修改的时候要注意,必须先设定容量再进行修改。
//这种做法是错误的
vector<int>c;
c[2]= 3;
4、定义二维数组的方法
vector<vector<int> >dp(m+1, vector<int>(n+1));