二维向量大小

2-D vector Size

在 C++ 中,我编写了一个代码,其中包含一个 2D 向量,并且要求用户提供 2D 向量中的输入。我发现很难找到没有。在大小函数的帮助下,2 个向量中的行数。

#include <bits/stdc++.h>
#include <vector>
using namespace std;

int diagonalDifference(vector<vector<int>> arr)
{
    int d = arr[0].size();
    cout << d;
    return 0;
}

int main()
{
    int size;
    cin >> size;
    vector<vector<int>> d;
    for (int i = 0; i < size; i++)
    {
        d[i].resize(size);
        for (int j = 0; j < size; j++)
        {
            cin >> d[i][j];
        }
    }
    cout << diagonalDifference(d);
}

输出应该是 No. Rows ,但它是 NULL

这里

vector<vector<int>> d;
for (int i = 0; i < size; i++)
{
    d[i].resize(size);
    //...

d 是大小为 0 的向量,访问 d[i] 是越界的。你似乎意识到你首先必须调整内部向量的大小,但你错过了对外部向量做同样的事情。我真的不明白您的代码如何 运行 打印 arr[0].size(); 的任何内容而不出现段错误。无论如何,问题是 arr[0].

处没有元素

但首先,看看你的函数参数 -> 是你的 vector 的副本,使用 (vector<> & my vec) 来避免 vector class 的复制机制(例如复制构造函数)导致如果你把你的向量作为参数放在那里,你将在函数括号内进行一些更改,你将看不到任何结果(如果你不想从函数 main 更改你的主向量,请保持它不变)。

其次,查看下面粘贴的代码片段。

std::vector<std::vector<typename>> my_vector{};
my_vector.resize(width);
for (size_t i = 0; i < my_vector.size(); ++i)
{
    my_vector[i].resize(height);
}

它给你二维向量

Operator[] for vector 超载,你必须使用 my_vector[0].size() my_vector[1].size() 等等!我建议按 C++ 标准中给出的循环类型显示大小

此致!