сделал 2d массив с использованием двух разных размеров 1d массивов - PullRequest
0 голосов
/ 08 мая 2018

Как я могу сделать 2d массив arr[][], используя два 1d массива arr1[] arr2[] разного размера, как arr1 = {1,2,3} arr2 = {4,5} и должно выглядеть так:

arr[][] = 1 2 3
          4 5  

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вы не можете сделать это на C ++, единственными двумя способами являются указатели или вектор stl, которые я бы порекомендовал для упрощения.
Примерно так (с использованием C ++ 11):

#include <vector>

using namespace std;

int main(){
    vector< vector<int> >arr = {{1, 2, 3}, {4, 5}};
}

Если вы не можете использовать C ++ 11, вы все равно можете инициализировать вектор, добавляя каждое значение внутри цикла или одно за другим, используя push_back().

0 голосов
/ 08 мая 2018

Вы не можете иметь многомерный массив, используя arr[][], потому что вы должны заранее объявить размер массива.Например, допустимо следующее, но массив только частично инициализирован :

#include <iostream>

int main() {
    int arr[][4] = {
                     { 1, 2, 3 },
                     { 4, 5 },
                     { 6, 7, 8, 9},
                    };

    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 4; ++j)
        {
            std::cout << arr[i][j] << std::endl;
        }
    }
}

Другой альтернативой является динамическое объявление массива:

int* arr[3] {
    new int[4] { 1, 2, 3 },
    new int[2] { 4, 5 },
    new int[4] { 6, 7, 8, 9},
    };

Youили, конечно, потребуется запись длины массива и впоследствии необходимо освободить память!

И все это при условии, что вы не можете использовать std:vector, что было бы идеально.

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