我有一个 1*5 的矩阵
我定义:
int **mat = new int*[5]; // define the matrix
int* ptr = *mat;
ptr++
给了我矩阵下一行的指针。
我想获取第一行的第二个元素的指针([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;
#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)
}