二维vector

一、初始化
首先需要知道二维vector如何获得行数与列数。
int row=a.size();//通过a.size()获取行数。因为a中的元素是vector,有几个vector就有几行
int column=a[i].size();//通过a[i].size()获取第i+1行(假定第一行为首行)有多少元素,即可知列数。

size()可求vector中有效数据的数量。capacity()求的是容量。

方法一:直接在定义时进行初始化

vector<vector<int>>array(r,vector<int>(c,0));


定义了一个r行c列的二维数组,且初始值为0.

方法二:用resize
 

vector<vector<int>>a(r);//r不可少,规定了行数
for (int i = 0; i < r; i++)
{
	a[i].resize(c, k);
}

定义了一个r行c列初始值为3的二维数组。如果不写3则默认为0

实例:

vector<vector<int>>array2(3);
for (int i = 0; i < array2.size(); i++)
{
	array2[i].resize(3, i);
}
cout << "未改动前:" << endl;
for (int i = 0; i < array2.size(); i++)
{
	for (int j = 0; j < array2[i].size(); j++)
	{
		cout << array2[i][j] << " ";
	}
	cout << endl;
}

结果:

二、添加与删除:以第一行、第一列为首行首列
添加一行:

vector<int>inrow(5,6);//初始化了一个一维数组,有5个元素,并且全为6
a.insert(a.begin()+2,inrow);//将inrow数组插入到了二维数组的第二行后

实例:
 

vector<int>wta(3, 10);//一个一维数组,有3个元素,初始化为10
array2.insert(array2.begin() + 2, wta);
cout << "添加一行后:" << endl;
for (int i = 0; i < array2.size(); i++)
{
	for (int j = 0; j < array2[i].size(); j++)
	{
		cout << array2[i][j] << " ";
	}
	cout << endl;
}

结果:

添加一列:

for(int i=0;i<a.size();i++)
{
      a[i].insert(a[i].begin()+2,9);//在第二列后插入其元素全为9的一列。
}

实例:

for (int i = 0; i < array2.size(); i++)
{
	array2[i].insert(array2[i].begin() + 2,9);
}

结果:

删除行:

a.erase(a.begin()+m,a.begin()+n);//删除第m+1~n行(包括m+1,n)

实例:

array2.erase(array2.begin() + 1, array2.begin() + 3);

结果:

删除列:

for (int i = 0; i < a.size(); i++)
{
    a[i].erase(a[i].begin()+m, a[i].begin() + n);//删除第m+1~n列(包括m+1,n)
}

实例:

for (int i = 0; i < array2.size(); i++)
{
	array2[i].erase(array2[i].begin(), array2[i].begin() + 2);
}

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值