2d векторный ввод и отображение через функцию - PullRequest
0 голосов
/ 12 сентября 2018

Я написал этот код для ввода и отображения 2-мерной векторной матрицы, но она не работает, может кто-нибудь помочь мне определить ошибки.Основная функция принимает только входы 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 голосов
/ 12 сентября 2018

В вашей функции 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));
    // ...
}

См., Например, эту std::vector ссылку на конструктор для получения дополнительной информации об используемых конструкторах (альтернатива 2 и 3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...