0x01.说明
- vector是向量类型,可以容纳许多类型的数据,也被称为容器,可以理解为动态数组,是封装好了的类。
- 使用应添加vector头文件。
- 下标从0开始。
0x02.一维vector基本使用
1.创建
不指定大小:
//创建一个向量a,为空
vector<int>a;
指定大小,不初始化:
//创建一个含100个int类型元素的动态数组,不初始化
vector<int> a(100);
指定大小,并初始化:
//给每个元素初始化为0
vector<int> a(100,0);
使用其他向量赋值:
//将c的前五个元素给a(0-4)
vector<int> a(c.begin(),c.begin+5);
使用数组赋值:
//将数组的1,3给a
int c[3]={1,3,5};
vector<int> a(c,c+2);
2.添加元素
往尾部添加:
vector<int>a;
cin >> i;
a.push_back(i);
插入元素:
//在a的0号元素插入4
a.insert(a.begin(), 4);
//在a的0号元素插入3个数,值都是4
a.insert(a.begin(), 3, 4);
注意:这种初始没有指定大小的向量,不可以使用i添加元素,只能访问和改变已存在元素。
3.删除元素
//删除1号元素以后的所有元素(包含1号)
a.erase(a.begin + 1, a.end);
//删除0号元素
a.erase(0);
4.获取向量大小
int length=a.size()
5.清空向量
a.clear();
6.访问向量
下标访问:
for (int i = 0; i < a.size(); i++) {
cout << a[i] << endl;
}
迭代器访问:
vector<int>::iterator it;
for (it = a.begin; it != a.end; it++) {
cout << a[i] << endl;
}
增强for循环:
for (int num : a) {
cout << num << endl;
}
7.翻转元素
reverse(a.begin, a.end);//需要算法头文件
8.排序
升序:
sort(a.begin, a.end);
降序:
bool Comp(const int& a, const int& b)
{
return a > b;
}
sort(a.begin, a.end, Comp);
9.作为函数的参数和返回值
int Distance(vector<int>& a, vector<int>& b)
0x03.二维vector的基本使用
1.创建
创建一个空的二维vector:
vector<vector<int>>map;
先建一维vector,再建二维vector:
vector<int> temp(5);
vector<vector<int> > matrix(4, temp);//创建4*5得二维vector
直接给二维vector一个初始大小:
vector<vector<int>>map(5);//等于确定了行,但没有确定列
2.添加元素
先往一维添加,再将一维的给二维:
for (int j = 0; j < matrix.size(); j++) {
temp.clear();
for (int i = 0; i < temp.size(); i++) {
cin >> num;
temp.push_back(num);
}
matrix.push_back(temp);
}
已经初始化的二维vector,直接赋值:
for (int i = 0; i < matrix.size; i++) {
for (int j = 0; j < matrix[i].size(); j++) {
cin >> num;
matrix[i][j] = num;
}
}
3.遍历
使用迭代器:
vector<int>::iterator it;
vector<vector<int>>::iterator iter;
vector<int> temp;
for (iter = matrix.begin; iter != matrix.end; iter++) {
temp = *iter;
for (it = temp.begin; it != temp.end; it++) {
cout << *it << endl;
}
}
直接下标遍历:
for (int i = 0; i < matrix.size(); i++) {
cout << "[" << "";
for (int j = 0; j < matrix[0].size(); j++) {
cout << matrix[i][j] << "";
}
cout << "]" << endl;
}
4.作为函数的参数和返回值
int maxAreaOfIsland(vector<vector<int>>& grid)
ATFWUS --Writing By 2020--03--15