二维向量大小
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++ 标准中给出的循环类型显示大小
此致!
在 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++ 标准中给出的循环类型显示大小
此致!