构造函数中的二维数组怎么定义与赋值
构造函数中的二维数组如何定义与赋值?
不知道一个类的构造函数中的二维数组怎样定义与赋值,具体是这样的:
class LeastSquare
{
public:
LeastSquare(double **a,double *b,int Length_a,int Length_b);
~LeastSquare();
private:
double **BL;
double *T;
};
首先定义一个类,里面的BL是二维数组,由构造函数中的a进行初始化,(这里的BL,a的定义可能不准确),就是不知道该怎样定义BL和a ,怎样实现这一过程?
------解决方案--------------------
这么写
int **bl;
bl = new int*[a];
for(i=0;i <a;i++)
bl[i]=new int[b];
------解决方案--------------------
用vector的例子:
#include <iostream>
#include <vector>
using namespace std;
class LeastSquare
{
public:
LeastSquare(const vector <vector <double> > &a,const vector <double> &b):BL(a),T(b){}
~LeastSquare(){}
void disp_BL()const;
void disp_T()const;
private:
vector <vector <double> > BL;
vector <double> T;
};
void LeastSquare::disp_BL()const
{
for (int i=0;i <BL.size();i++)
{
for (int j=0;j < BL[i].size();j++)
{
cout < <BL[i][j] < < " ";
}
cout < <endl;
}
}
void LeastSquare::disp_T()const
{
vector <double> ::const_iterator it=T.begin();
for (;it!=T.end();++it)
{
cout < <*it < < " ";
}
cout < <endl;
}
int main(int argc,char* argv[])
{
vector <vector <double> > a;
for (int i=0;i <3;++i)
{
vector <double> temp;
for (int j=0;j <5;++j)
{
temp.push_back(i*5+j);
}
a.push_back(temp);
}
LeastSquare les(a,a[0]);//a[0]是一个vector <double> 类型
cout < < "les BL is: " < <endl;
les.disp_BL();
cout < < "les T is: " < <endl;
les.disp_T();
return 0;
}
------解决方案--------------------
你这样写吧:
const int ROWS=3;//行数
const int COLS=5;//列数
vector <vector <double> > d( ROWS,vector <double> (COLS) );
//定义d[ROWS][COLS]数组,初始值为0
d[0][0]=1;
d[0][1]=56;
d[1][0]=70;
for (int i=0;i <d.size();++i)
{
for (int j=0;j <d[i].size();++j)
{
cout < <d[i][j] < < " ";//输出数组内容
}
cout < <endl;
}
不知道一个类的构造函数中的二维数组怎样定义与赋值,具体是这样的:
class LeastSquare
{
public:
LeastSquare(double **a,double *b,int Length_a,int Length_b);
~LeastSquare();
private:
double **BL;
double *T;
};
首先定义一个类,里面的BL是二维数组,由构造函数中的a进行初始化,(这里的BL,a的定义可能不准确),就是不知道该怎样定义BL和a ,怎样实现这一过程?
------解决方案--------------------
这么写
int **bl;
bl = new int*[a];
for(i=0;i <a;i++)
bl[i]=new int[b];
------解决方案--------------------
用vector的例子:
#include <iostream>
#include <vector>
using namespace std;
class LeastSquare
{
public:
LeastSquare(const vector <vector <double> > &a,const vector <double> &b):BL(a),T(b){}
~LeastSquare(){}
void disp_BL()const;
void disp_T()const;
private:
vector <vector <double> > BL;
vector <double> T;
};
void LeastSquare::disp_BL()const
{
for (int i=0;i <BL.size();i++)
{
for (int j=0;j < BL[i].size();j++)
{
cout < <BL[i][j] < < " ";
}
cout < <endl;
}
}
void LeastSquare::disp_T()const
{
vector <double> ::const_iterator it=T.begin();
for (;it!=T.end();++it)
{
cout < <*it < < " ";
}
cout < <endl;
}
int main(int argc,char* argv[])
{
vector <vector <double> > a;
for (int i=0;i <3;++i)
{
vector <double> temp;
for (int j=0;j <5;++j)
{
temp.push_back(i*5+j);
}
a.push_back(temp);
}
LeastSquare les(a,a[0]);//a[0]是一个vector <double> 类型
cout < < "les BL is: " < <endl;
les.disp_BL();
cout < < "les T is: " < <endl;
les.disp_T();
return 0;
}
------解决方案--------------------
你这样写吧:
const int ROWS=3;//行数
const int COLS=5;//列数
vector <vector <double> > d( ROWS,vector <double> (COLS) );
//定义d[ROWS][COLS]数组,初始值为0
d[0][0]=1;
d[0][1]=56;
d[1][0]=70;
for (int i=0;i <d.size();++i)
{
for (int j=0;j <d[i].size();++j)
{
cout < <d[i][j] < < " ";//输出数组内容
}
cout < <endl;
}