获取矩阵行的下一个指针

时间:2013-05-24 22:52:18

标签: c++ pointers

我的矩阵为1 * 5

我定义了:

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

int* ptr = *mat;

ptr++给出了矩阵下一行的指针。

我想得到第一行第二个元素的指针([0] [1]的位置)。

我该怎么办?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:-1)

在我的代码中,它的工作方式类似于此(先前的代码在#columns> 3和#rows> 3上存在问题,尤其是对于双精度向量

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