1

私は1 * 5の行列を持っています

私は定義しました:

int **mat = new int*[5]; // define the matrix

int* ptr = *mat;

ptr++行列の次の行のポインターを教えてくれます。

1行目の2番目の要素([0][1]の位置)のポインタを取得したい。

どうすればできますか?

4

2 に答える 2

1

C および C++ には多次元配列はありません。したがって、これを行うには、追加の割り当てを行う必要があります。

まず、メモリを割り当てます。

int rows = 1;
int columns = 5;

int** mat = new int*[columns];
for(int i = 0; i < columns; ++i)
{
    mat[i] = new int[rows];
}

マトリックスにインデックスを付けます。

int x = 1; // Column number, x-movement
int y = 0; // Row number, y-movement
//mat[x][y] = ???;

割り当てたメモリを解放することを忘れないでください。

for(int i = 0; i < columns; ++i)
{
    delete [] mat[i];
}
delete [] mat;

または、std::vector を使用します。使用と理解がはるかに簡単です。

#include <vector>

int rows = 1;
int columns = 5;

std::vector<std::vector<int > > mat = std::vector<std::vector<int > >();
mat.resize(columns);
for(int i = 0; i < 5; ++i)
{
    mat[i].resize(rows);
}

//mat[1][0] = 100;
于 2013-05-25T00:17:10.627 に答える