C++の場合は、色々便利な線型演算用のクラス・ライブラリィがあるので、 そういうものを使えば良いと思うが、 C++ は基本的に C の上位互換なので、 上で説明しているやり方は C++ でも使える。
ただし C++ では、メモリの割り当てと解放は (C のように malloc(), free() を使うのでなく)、 new と delete を使うのが普通なので、 それらを使うように書き直しておく。
(NULL でなく、nullptr とすべきなのかな?)
| C++ 版 new_matrix() |
#include <iostream>
using namespace std;
typedef double *vector;
typedef vector *matrix; // matrix って行列という意味です。
matrix new_matrix(int m, int n)
{
matrix a = new vector [m];
if (a == NULL) {
return NULL;
}
vector ap = new double [m*n];
if (ap == NULL) {
delete [] a;
return NULL;
}
for (int i = 0; i < m; i++)
a[i] = ap + i * n;
return a;
}
void delete_matrix(matrix a)
{
delete [] a[0];
delete [] a;
}
|
桂田 祐史