Хороший способ ввода ввода в двумерный целочисленный массив C ++ - PullRequest
0 голосов
/ 04 мая 2019

Итак, я хочу создать двумерный массив в C ++ и ввести в него входные данные.

int** arr = new int*[arrrows];

Я написал функцию, которая позволяет мне вводить данные в одномерный массив.

void fillintarray(int* arr, int arrsize)
{
    for(int i = 0; i < arrrows; i++)
    {
        std::cin >> arr[i];
    }
}

Теперь я попытался создать функцию для ввода ввода в двумерный массив, используя функцию 1D

void fill2dintarray(int** arr, int arrrows, int arrcols)
{
    for(int i = 0; i < arrrows; i++)
    {
        arr[i] = new int[arrcols];
        fillintarray(arr[i], arrcols);
    }
}

Так будет ли эта реализация работать правильно? Кроме того, было бы полезно, если бы вы могли рассказать мне еще несколько хороших способов ввода ввода в 2D-массив; Я новичок в C ++. Спасибо!

1 Ответ

2 голосов
/ 04 мая 2019

Прежде всего, я бы порекомендовал вам использовать vector вместо того, чтобы обрабатывать необработанные указатели самостоятельно. 2D массив с 5 строками может быть представлен как std::vector<std::vector<int> > arr(5). Тогда вам просто нужно заполнить каждую строку, нажав на нее ввод.

, например

void fill2dintarray(std::vector<std::vector<int> > &arr, int arrrows, int arrcols)
{
    for(int i = 0; i < arrrows; i++)
    {
        for (int j = 0; j < arrcols; j++)
        {
            int temp;
            std::cin >> temp;
            arr[i].push_back(temp);
        }
    }
}

int arrrows = 5;
int arrcols = 5;
std::vector<std::vector<int> > arr(arrrows);
fill2dintarray(arr, arrrows, arrcols);

Или, если ваши входные данные уже представлены в виде двумерного массива, например

1 2 3 
4 5 6
7 8 9

Вы можете считать чтение всей строки в виде строки, превратить строку в поток строк и использовать пустое пространство в качестве разделителя для передачи каждого значения в каждую строку вашего 2D-массива. Вы можете видеть этот ответ Quora для вдохновения.

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