2

C ++でプログラミングしてからしばらく経ちましたが、理解しようとしている小さな問題があります。

1 次元が動的ではない 2 x 2 の動的配列を作成することは可能ですか?

例えば

配列[2][動的]?

array[dynamic][dynamic] を作成するのはもったいないようで、最初の [0][dynamic] と 2 番目の [1][dynamic] 値のみを使用する必要がある場合。

別のデータ構造を使用する必要がありますか?

ありがとう。

4

3 に答える 3

1

配列とポインターは基本的に同等であるため、ポインターの配列を使用してこれを実現できます。

int* array[2];
array[0] = new int[x];
array[1] = new int[y];

多次元配列と同じようにアクセスできます。

array[0][x-1] = z;
于 2012-10-24T15:05:53.740 に答える
1

これは C++11 で機能します。

std::array<std::vector<MyClass>,2> arr;

または、ベクトルの c スタイルの配列を使用できます。

std::vector<MyClass> arr[2];
于 2012-10-24T15:27:31.743 に答える
0

確かに、それは最初の次元で動的でなければなりません。

たとえばこのように

typedef int two_int_array[2];

two_int_array* a = new two_int_array[n];
for (int i = 0; i < n; ++i)
{
    a[i][0] = 1;
    a[i][1] = 2;
}

もちろん、一般的により良い方法はベクトルを使用することです。配列のベクトルを使用できないため、構造体のベクトルの方が適している場合があります。

struct two_int_struct
{
    int value[2];
};

std::vector<two_int_struct> a(n);
for (int i = 0; i < n; ++i)
{
    a[i].value[0] = 1;
    a[i].value[1] = 2;
}
于 2012-10-24T15:06:47.003 に答える