一、关于vector
1.本质 可以理解为变长数组,即长度根据需要而自动改变的数组。
2.常见用途 常用于普通数组会导致超内存情况下,或者用邻接表的方式储存图。
3.优势 内存占用小,操作简单!
二、使用vector
1.需要引用的头文件
#include<vector>
using namespace std;
2.定义
vector<typedef> name 其中typedef可以为任何基本类型,比如:
vector<int> name;
vector<double> name;
vector<char> name;
vector<node> name; //其中node为结构体类型。
vector<vector<int>> name;
3.访问
3.1 通过下标访问
与普通数组的访问方法相同,注意下标仍然从0开始。
3.2 通过迭代器访问
迭代器可以看成类似指针的东西,其定义为
vector<typedef>::iterator it; //其中的typedef可以是任意数据类型如int、double等。
3.3 访问实例
#include<stdio.h>
#include<vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1;i <= 5;i++){
vi.push_back(i); //在 vi 的末尾添加元素 i 。
}
vector<int>::iterator it == vi.begin();
for(int i = 0;i < 5;i++){
printf("%d",*(it + i));
}
return 0;
}
4.常用函数
4.1 push_back
vector<int> vi;
vi.push_back(2); //在 vi 的末尾添加元素
4.2 pop_back
vector<int> vi;
vi.pop_back(); //在 vi 的末尾删除最后一个元素
4.3 size
vector<int> vi;
int size = vi.size(); //返回 vi 中元素的个数
4.4 clear
vector<int> vi;
vi.clear(); //清除 vi 中所有的元素。
4.5 insert
vi.insert(vi.begin() + 2, -1); //在 vi[2] 处插入 -1 。
4.6 erase
//1. 删除单个元素
vi.erase(vi.begin() + 3); //删除 vi[3] .
//2. 删除某一个区间中的元素(区间左开右闭)
vi.erase(vi.begin() , vi.begin() + 3); //删除 vi[0] - vi[2] 。