这是我收到的有关前一个问题的评论之一的后续内容(我认为在这些情况下最好提出一个新问题)。
我创建了一个 Matrix 类作为 vector
这是标题:
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) {}
只是,我想知道,主要是出于好奇......有什么方法可以通过不使用初始化列表构造来做到同样的事情吗? 我正在考虑类似的事情(这是一个例子,当然这不起作用)
Matrix::Matrix(int nrows, int ncols):
{
Matrix_= vector<vector<double>>(nrows, vector<double>(ncols, 0.));
nc_ = ncols;
nr_ = nrows;
}
谢谢!
最佳答案
只需删除:
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()
的值相同
关于C++ - 创建一个带有赋值而不是初始化的 vector <vector<double>>矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49984516/