C++_vector的使用

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

发布了126 篇原创文章 · 获赞 142 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ATFWUS/article/details/104878165