我已经编写了这段代码来输入和显示2D向量矩阵,但是它不能正常工作,有人可以帮助我识别错误。 主要功能仅接受输入a和b,而该函数未正确调用。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<vector<int>> input(int a, int b)
{
vector<vector<int>> arr;
for (int i = 0; i < arr.size(); i++)
{
for (int j = 0; j < arr[i].size(); j++)
{
cin >> arr[i][j];
}
}
return arr;
}
void display(vector<vector<int>> arr)
{
for (int i = 0; i < arr.size(); i++)
{
for (int j = 0; j < arr[i].size(); j++)
{
cout << arr[i][j] << " ";
}
}
cout << "\n";
}
int main()
{
int a, b;
cin >> a >> b;
vector<vector<int>> arr;
arr = input(a, b);
display(arr);
}
答案 0 :(得分:3)
在您的input
函数中,向量arr
为空。这意味着arr.size()
将返回0
,并且循环不会发生。
如果您从一开始就知道矢量的尺寸(我假设它们是a
和b
变量(名称很错误)),则可以使用它来设置尺寸:>
vector<vector<int>> input(int a,int b)
{
// Create a vector of a elements, each element is in turn a vector of b elements
vector<vector<int>> arr(a, vector<int>(b));
// ...
}
例如参见this std::vector
constructor reference,以获取有关所使用的构造函数的更多信息(替代2和3)。