【发布时间】:2018-06-22 21:45:32
【问题描述】:
我知道,向量类是通过以下方式初始化的:
Vector::Vector(initializer_list<double> lst)
:size{static_cast<int>(lst.size())},elem{new double[static_cast<int>(lst.size())]}
{
copy(lst.begin(),lst.end(),elem);
}
这是我的矩阵类:
class Matrix{
private:
int row;
int col;
double elem**
public:
//Default Constructor:
Matrix(int row,int col);
//Initialized list constructor:
Matrix(initializer_list<initializer_list<double>> lst);
我想,我应该在初始化列表中使用初始化 lis 来创建初始化矩阵。从语法的角度来看,我该怎么做?
【问题讨论】:
-
如果矩阵不是矩形,我的编译时功夫不足以提供编译器错误。
-
默认构造函数不应该没有参数吗?
-
@user4581301 你不必:如果你初始化一个二维数组,编译器也不会抱怨:
int mat[3][3] = { {1,2,3}, {9}, {6,7} };。在这里找到最大的行来确定列就足够了:-) -
@Christophe 诅咒!你说的对!我生命中的一个小时没有浪费;我现在对
constexpr和static_assert的了解比我今天早上起床时对initializer_list的了解要多得多。 -
@atru 这取决于矩阵是否可调整大小。当然,没有默认构造函数会有一些限制(例如,你不能构造一个 n 矩阵的向量)。
标签: c++ matrix initialization initializer-list