二维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);
}

结果:

### C++ 中初始化二维 `vector` 的方法 #### 使用大括号直接初始化 可以直接通过嵌套的大括号来定义并初始化一个具有固定行数和列数的二维向量。这种方式适用于已知具体数值的情形。 ```cpp #include <iostream> #include <vector> int main() { std::vector<std::vector<int>> vec = {{1, 2}, {3, 4}}; } ``` 此代码片段展示了创建了一个两行两列的整型二维向量,并对其进行了初始赋值[^1]。 #### 动态设置大小并填充默认值 当希望指定二维向量的具体尺寸以及各位置上的初值时,可以先调用 `resize()` 方法设定其规模,再利用构造函数参数给定统一的缺省值。 ```cpp #include <vector> // 定义一个三行四列且所有元素均为0的二维向量 std::vector<std::vector<int>> matrix; matrix.resize(3, std::vector<int>(4)); ``` 上述例子中,首先声明了名为 `matrix` 的二维向量对象;接着借助 `resize()` 函数指定了该容器应具备三个子向量(即外层维度),而每个内部的一维向量都含有四个零作为起始状态的数据项[^2]。 #### 行或列数量不定的情况下初始化 对于某些应用场景下可能遇到不确定内层数组长度的需求,则可以在最里层采用空的 `vector<int>()` 来表示未知宽度的情况: ```cpp #include <vector> // 创建一个包含五个空一维向量的二维向量 std::vector<std::vector<int>> dynamicMatrix(5); ``` 这里构建了一张由五条记录构成但每条记录下的字段数目尚待确定的数据表结构。 #### 获取二维向量的行列信息 为了方便后续操作,通常还需要知道当前二维向量的实际规格。这可通过访问 `.size()` 成员属性实现——对外部一层应用可得总行数,对任一行再次求解则给出对应列宽。 ```cpp #include <vector> std::vector<std::vector<int>> v(2, std::vector<int>(3, 1)); int rows = v.size(); // 得到行的数量 int cols = v[0].size(); // 取任意一行计算得到列的数量 ``` 这段程序说明了如何查询所建立起来的二维向量究竟有多少行多少列[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值