matrix — C ++ Template Class Динамический массив указателей на массивы

Я делаю матричный класс в C ++. Чтобы создать этот класс, я создаю массив указателей, и эти указатели указывают на динамические массивы.

Пока что у меня есть:

    template<typename T> class Matrix
{
public:
//constructor
int **m = new int*[_rows];
for (int i = 0; i < _rows; i++)
{
m[i] = new int[_cols];
}

//destructor
for (int i = 0; i < _rows; i++)
{
delete[] m[i]
}
delete[] m;
};

Я также хотел бы создать некоторые функции для управления этой структурой.
Я видел код, похожий на этот, который часто используется, но я не вижу, как это создает массив, который содержит указатели на другие массивы. Эта концепция сбивает меня с толку, и я просто хотел бы, чтобы кто-то разъяснил мне, как я должен делать то, что я хочу делать.

Я хочу, чтобы класс был изолирован и не имел никакого отношения к вводу. Скорее всего, он будет вызван в другом коде и использует мои функции для создания структуры матрицы. Создание массива указателей не является для меня запутанной частью, оно заставляет эти указатели указывать на другие массивы, а размер указателей увеличивается в зависимости от количества входных записей.

0

Решение

#include <iostream>

using namespace std;

template<typename T> class Matrix
{
public:
Matrix(int row, int col)
{
_rows = row;
_cols = col;
m = new T*[_rows];
for (int i = 0; i < _rows; i++)
{
m[i] = new T[_cols];
for(int j=0; j < _cols; j++)
{
m[i][j] = i*10 + j;
}
}
}

~Matrix()
{
for (int i = 0; i < _rows; i++)
{
delete[] m[i];
}
delete[] m;
}

T **m;
int _rows;
int _cols;
};

void main()
{
Matrix<int> a(3,4);

for(int i=0; i<a._rows; i++)
{
for(int j=0; j<a._cols; j++)
{
cout << "[" << i << "][" << j << "]" << a.m[i][j] << " ";
}
cout << endl;
}

}

РЕЗУЛЬТАТ:

[0] [0] 0 [0] [1] 1 [0] [2] 2 [0] [3] 3

[1] [0] 10 [1] [1] 11 [1] [2] 12 [1] [3] 13

[2] [0] 20 [2] [1] 21 [2] [2] 22 [2] [3] 23

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]