Как разрешить пользователю устанавливать размер строки и размер столбца 2D вектора? - PullRequest
1 голос
/ 05 апреля 2020

У меня есть 2D вектор под моей частной секцией; Я пытаюсь использовать функцию fill2dVector() и позволить пользователю вводить количество строк и столбцов. Я думал о том, чтобы сделать это двумя способами:

Я пытался сделать что-то вроде этого:

private
    size_t numRows, numCols;
    vector<vector<int> > data(numRows,vector<int> (numCols,0));  

Но это выдает мне ошибку: numRows is not a type, и VS хочет, чтобы я написал определение функции для данных, даже несмотря на то, что была возможность сделать это автоматически, это привело бы к большему количеству ошибок.

Второе, что я попробовал, было просто иметь вектор там и просто изменить его размер до того, что пользователь выбрал в качестве своего строки и столбцы. Когда я попытался сделать data.resize(numRows,numCols);, я получил ошибку: no instance of overloaded function "std::vector<_Ty, _Alloc>::resize [with _Ty=std::vector<int, std::allocator<int>>, _Alloc=std::allocator<std::vector<int, std::allocator<int>>>]" matches the argument list

#include <iostream>
#include <vector>

class Matrix
{
public:
    Matrix();

    void fill2dVector();

    void display2dVector() const;

private:
    size_t numRows, numCols;
    std::vector<std::vector<int> > data;
};

Matrix::Matrix()
{
}

void Matrix::display2dVector() const
{
}

void Matrix::fill2dVector()
{
    std::cout << "   How many rows? ";
    std::cin >> numRows;

    std::cout << "How many columns? ";
    std::cin >> numCols;
    std::cout << std::endl;

    std::cout << "*** numRows = " << numRows << ", " << "numCols = " << numCols << std::endl;
    data.resize(numRows,numCols);
    std::cout << "*** rowSize = " << data.size() << ", " << "colSize = " << data[0].size() << std::endl;
}

int main()
{
    std::cout << "Enter the size of the matrix:" << std::endl;

    Matrix matrix;
    matrix.fill2dVector();

}

1 Ответ

2 голосов
/ 05 апреля 2020

Вы можете перезаписать data в fill2dVector,

data = vector<vector<int>>(numRows, vector<int>(numCols, 0));  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...