vector<vector<int>> 怎样知道二维数组的行数和列数
时间: 2024-09-18 13:01:06 浏览: 86
`vector<vector<int>>` 表示的是一个动态大小的二维整数向量,也称为动态数组或矩阵。要获取这个二维数组(矩阵)的行数和列数,你可以通过迭代每个内部的 `vector<int>` 来计数。
以下是一个简单的步骤:
1. 初始化两个变量,如 `rows` 和 `cols`,分别用于存储行数和列数,初始值设为0。
2. 使用嵌套循环遍历矩阵中的元素。外层循环遍历每一行,内层循环遍历每一列。
3. 对于每行,访问完所有列后,将 `rows` 自增 1。
4. 对于每个列,由于我们是在处理矩阵中的一个 `vector`,所以列数即为每个 `vector` 的长度,因此不需要额外的循环,直接累加到 `cols` 即可。
如果你想要一个更通用的方法,可以使用 C++ 的标准库函数,例如 `<vector>` 中的 `size()` 函数,但需要稍微复杂一些,因为需要分别计算内、外层 `vector` 的尺寸。下面是一个代码片段演示如何做到这一点:
```cpp
std::vector<std::vector<int>> matrix;
// ...填充矩阵...
int rows = matrix.size(); // 获取行数
if (rows > 0) {
int cols = matrix[0].size(); // 获取列数,假设所有行的列数都一样
// ...现在你知道行数和列数了...
}
```
相关问题
vector<pair<int,int>> 是二维数组还是一维数组
vector<pair<int,int>> 是一维数组,它是一个 vector 容器,其中每个元素都是一个 pair<int,int> 类型的对象。每个 pair 对象表示一个二元组,相当于一个长度为 2 的一维数组。因此,vector<pair<int,int>> 可以看作一个长度可变的一维数组,其中每个元素都是长度为 2 的一维数组。
二维vector<vector<pair<int,int>>>
二维 vector<vector<pair<int,int>>> 表示了一个二维数组,其中每个元素是一个 vector,而每个 vector 中的元素是一个 pair,pair 中存储了两个 int 类型的值。
这种数据结构通常用于表示稀疏矩阵,其中第一维表示行,第二维表示列,每个元素是一个非零的值和它的列坐标。例如,下面是一个 3x4 的稀疏矩阵:
```
0 0 0 0
0 0 2 0
0 3 0 0
```
可以用以下代码来表示:
```cpp
vector<vector<pair<int,int>>> mat(3);
mat[1].push_back({2, 2});
mat[2].push_back({3, 1});
```
其中 mat[1][0] 表示第 2 行第 3 列的值为 2,mat[2][0] 表示第 3 行第 2 列的值为 3。其它位置都是 0,可以省略不存储。
阅读全文