6.1 vector的常用解法详解
vector,翻译为向量,但在C++中实际上是一种变长数组(长度可以根据需要来自动改变的数组)
#include <vector>
using namespace std;
1、vector的定义
vector<typename> name;
(1)一维数组
vector<int> nums(n, 0)
//将nums设置为大小为n的数组,并且数组中的值都为0
(2)二维数组
vector<vector<int>> matrix(m, vector<int> (n, 0))
//将nums设置为一个m * n的二维数组,数组中的值都初始化为0
2、vector内容器的访问
(1)通过下标进行访问
nums[index] //访问元素nums[index]
(2)通过迭代器进行访问
迭代器(interator)类似于一种指针的东西
vector<typename> :: iterator it;
//等价于auto it,这里auto -> vector<typename> :: interator
for (auto it = nums.begin(); it != nums.end(); it ++) {
cout<<*it; // nums[i]等价于*(nums.begin() + i)
}
//nums.begin(), nums.end()分别表示数组的首地址和数组尾元素地址的下一个地址
3、vector常用实例函数解析
(1)push_back()
push_back(x) //在vector之后添加元素x,时间复杂度O(1)
(2)pop_back()
pop_back() //删除vector的尾元素,时间复杂度O(1)
(3)back()
back() //访问vector的尾元素,时间复杂度O(1)
//通过push_back(), pop_back(), back()可以将vector当做stack来使用
(4)size()
size() //获取vector中元素的个数
(5)clear()
clear() //将vector中的所有元素清空,时间复杂度O(N)
(6)insert()
insert(it, x)用来在迭代器it处插入元素x, 时间复杂度O(N)
(7)earse()
1)、删除单个元素
erase(it)删除迭代器it处的元素
2)、删除一个区间的所有元素
erase(first, last)删除[first, last)之内的所有元素
4、vector的常见用途
1)、作为数组使用
2)、用邻接表存储图