这是我之前提出的一个问题的后续问题的后续行动(我认为最好在这些案例中提出新问题)。
我创建了一个Matrix类作为向量<矢量<双> >,它接受两个整数作为输入(简单地说,矩阵的尺寸),并创建填充零的矩阵。
这是标题:
URL
,实施是:
class Matrix{
public:
/*Basic constructor, accepts matrix dimensions
Matrix(int nr, int nc);
private:
vector<vector<double> > Matrix_;
int nr_, nc_;
};
我被建议我可以使用
简化它//CONSTRUCTOR
Matrix::Matrix(int nrows, int ncols)
{
nc_ = ncols;
nr_ = nrows;
/*creates rows*/
for (int i = 0; i < nrows; i++)
{
vector<double> row;
Matrix_.push_back(row);
}
/*Fills matrix with zeroes*/
for (int i = 0; i < nr_; i++)
{
for (int j = 0; j < nc_; j++)
{
Matrix_[i].push_back(0);
}
}
}
只是,我想知道,主要是出于好奇......有没有办法我可以通过不使用初始化列表构造来做同样的事情? 我想的是(这是一个例子,当然这不起作用)
Matrix::Matrix(int nrows, int ncols) : Matrix_(nrows, std::vector<double>(ncols, 0.)), nr_(nrows), nc_(ncols) {}
谢谢!
答案 0 :(得分:2)
只需删除:
Matrix::Matrix(int nrows, int ncols) {
Matrix_ = std::vector<std::vector<double>>(nrows, std::vector<double>(ncols, 0.));
nc_ = ncols;
nr_ = nrows;
}
另请注意,您并不真正需要nr_
,因为它与Matrix_.size()