2D向量输入和通过功能显示

时间:2018-09-12 06:03:42

标签: c++ vector

我已经编写了这段代码来输入和显示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);
}

1 个答案:

答案 0 :(得分:3)

在您的input函数中,向量arr。这意味着arr.size()将返回0,并且循环不会发生。

如果您从一开始就知道矢量的尺寸(我假设它们是ab变量(名称很错误)),则可以使用它来设置尺寸:

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)。