什么是vector?
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,简单的理解就是一个可以动态变化的数组。
vector的容量是随着你放入元素的数量而动态变化的。但是其只会增长而不是缩小

基本操作
在使用容器是要先写好头文件#include
构造容器
以int类型的为例子

void test01() {
	vector<int> v1;//创建一个空容器
	int arr[] = { 1,2,3,4,5,6,7,8 };
	vector<int>v2(arr, arr + sizeof(arr) / sizeof(int));//创建一个容器用arr中的元素填充
	vector<int>v3(v2.begin(), v2.end());//使用迭代器,用v2的区间当做新容器的元素。
	vector<int>v4(v3);//拷贝构造函数,创建一个一模一样的容器
	pr(v4);

}

常用的赋值操作

void test02() {
	int arr[] = { 10,20,30,40 };
	vector<int>v1(arr, arr + sizeof(arr) / sizeof(int));
	vector<int>v2;
	v2.assign(v1.begin(), v1.end());//拷贝
	//重载
	vector<int>v3;
	v3 = v2;
	int arr1[] = { 100,200,300,400 };
	vector<int>v4(arr1, arr1 + sizeof(arr1) / sizeof(int));
	v4.swap(v1);
	pr(v4);

}

size与capacity
size是返回该容器中的元素个数,而capacity则是返回该容器的容量,他们的区别就好像是杯子的大小和杯中水的体积一样

void test03() {
	int arr[] = { 1,2,3,4,5,6,7,8 };
	vector<int>v2(arr, arr + sizeof(arr) / sizeof(int));
	cout << v2.size();//元素个数  判断是否为空用empty
	v2.resize(5);//改变容器内元素的个数,多余的会删除掉,如果比以前变大了默认添加0。不想用默认可以resize(10,想要的值),而且只能改变元素个数,并不能改变容器容量
	v2.capacity();//返回容器的容量,与size不同的是size为容器里有多少元素,而capacity为容器的大小
    vector<int>().swap(v2);//如果向缩小容量可以使用swap这种方法,让v2和匿名空间两者交换指针的指向,这种方法也相当于是释放了空间
	v2.front();//返回容器中第一个元素
	v2.back();//返回容器中最后一个元素 ,他们与begin和end不同的地方在于begin和end返回的是迭代器

}

插入和删除操作

void test04() {
	vector<int>v;
	v.push_back(10);
	v.push_back(20);
	//头插法 ,使用迭代器
	v.insert(v.begin(), 30);
	v.insert(v.end(), 40);
   //删除
	v.erase(v.begin());//单个删除,删除第一个位置
	v.erase(v.begin(), v.end());//删除一个区间
	v.clear();//清空
}

reserve和resize的区别
//reserve是预留空间的,如果一开始想好了容器的大小可以直接用reserve去定义。

遍历

void pr(vector<int>v) {
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << endl;
	}
}

vector的优点:

可以使用下标访问个别的元素
迭代器可以按照不同的方式遍历容器
可以在容器的末尾增加或删除元素