c++ vector

创建vector

vector的几个别名:向量、动态数组

头文件:

#include <vector>

记得加上std命名空间,不然会报错

using namespace std;

创建vector

vector<int> A;//一维动态数组
vector<vector<int> > B;//二维动态数组

创建二维动态数组时,与 > 之间需要" "空格间隔,否则将会被识别为位运算符>>

常用函数

真的很常用的几个嗷

//push_back() 在向量的末尾插入值,如果有必要会扩展向量的大小
A.push_back(c);

//size() 显示向量的大小
A.size();
    
//begin() 返回一个指向向量开头的迭代器
//end() 返回一个指向向量末尾的迭代器   
// 使用迭代器 iterator 访问值
vector<int>::iterator v = vec.begin();
while( v != vec.end()) {
    cout << "value of v = " << *v << endl;
    v++;
}

//访问vector中的值
cout << A[i];//此时vector退化为数组

//clear() 清除向量中的内容
A.clear();

resize()

//resize(size_type n) 调整容器大小,使其包含n个元素 size_type是无符号整型
//resize(size_type n, const value_type& val) 调整容器大小,如果当前大小小于n需要扩容,则将新元素初始化为val的副本,否则将对它们进行值初始化?.
A.resize(5);
A.resize(8,100);

如果n小于当前容器大小,则内容减少到n,删除超出范围的元素
如果n大于当前容器大小,则在末尾插入元素来扩展内容达到n的大小
如果n也大于当前容器容量,将自动重新分配已分配的存储空间?(啥意思没看懂)

reserve()

除了resize()还有一个reserve()与之对应,reserve用来改变capacity的值。

具体内容可以参考

https://www.runoob.com/note/27430

二维vector的赋值

1、push_back()

使用push_back()赋值

vector<int> A;//一维动态数组
vector<vector<int> > B;//二维动态数组

A.push_back(1);
A.push_back(2);
A.push_back(3);
B.push_back(A);
A.clear();
A.push_back(4);
A.push_back(5);
A.push_back(6);
B.push_back(A);
A.clear();

vector B中:

1 2 3
4 5 6

2、定义并赋初值或遍历赋值

vector<vector<int> > A(5,vector<int>(3,0));//5行3列,初值为0

除了赋初值也可以定义大小后再遍历赋值

3、resize()调整容器大小或遍历赋值

vector<int> A;
A.resize(m);//m行
for(int i = 0; i < m; i++) A[i].resize(n);//n列
//遍历赋值
for(int i = 0; i < m; i++)
{
	for(int j = 0; j < n; j++)
	{
		a[i][j] = a;
	}
}
posted @ 2022-10-01 23:46  cheng_zhi  阅读(58)  评论(0)    收藏  举报