C ++のベクトルの場合、私は持っています
class Vec
{
public:
int len;
double * vdata;
Vec();
Vec(Vec const & v)
{
cout<<"Vec copy constructor\n";
len = v.len;
vdata=new double[len];
for (int i=0;i<len;i++) vdata[i]=v.vdata[i];
};
行列の類似コードの書き方を教えていただければ幸いです。私はこのようなことを考えています:
class Mat
{
public:
int nrows;
int ncols;
double * mdata;
Mat();
Mat(Mat const & m)
{
cout<<"Mat copy constructor\n";
nrows = m.nrows;
ncols = m.ncols;
しかし、最初にすべての要素を 1D 配列 (row1 row2 ... rown) に入れ、次に配列を行に切り刻み、次に各行を切り刻むという考えを使用して、行列のメモリ割り当てをコーディングする方法がわかりません。列。特に、このアイデアを次のような C++ 言語に翻訳するのを手伝ってもらえませんか?
vdata=new double[len];
for (int i=0;i<len;i++) vdata[i]=v.vdata[i];
};
私はこのようなことを考えています:
double *data=new double[nrows*ncols];
for (int i=0;i<nrows;i++)
{
for (int j=0;j<ncols,j++){data(i,j)=m.mdata[i][j]};
};
しかし、この部分についてはよくわかりません:
data(i,j)=m.mdata[i][j]
また、純粋な仮想要素のインデックス作成方法を使用することになっています。Mat オブジェクト m の (i,j) 要素は、m(i,j) によって取得されます。このインデックス演算子の const バージョンと非 const バージョンの両方を提供する必要があります。<-- これを行う方法を教えてください。
どうもありがとう。