具有动态大小的特征矩阵的默认初始状态
The default initial state of Eigen matrices with dynamic size
默认构造函数 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
使矩阵处于什么状态?是0x0矩阵吗?
特别是,如果声明了一个变量 Eigen::MatrixXd A;
,我以后如何测试是否已将某些内容分配给 A
?用A.size()==0
,还是有什么特殊的测试?
A default constructor is always available, never performs any dynamic memory allocation, and never initializes the matrix coefficients.
请注意,使用默认构造函数时,动态矩阵也不会分配其大小。所以,
Eigen::MatrixXd a;
是一个0x0矩阵,而
Eigen::MatrixXd b(10, 10);
是一个10x10矩阵,系数未初始化;
是的,您可以检查矩阵是否仍然 0x0 以验证是否已将某些内容分配给它。
请注意,如果大小不是动态的,它将有定义的行数 and/or 列,这将使我们更难知道是否已为其分配了某些内容:您应该初始化值然后检查它们是否已更改。
"In particular, if a variable is declared Eigen::MatrixXd A;
, how could I later test whether something has been assigned to A
?"
与相同的默认构造比较
if (A != Eigen::MatrixXd{})
// ...
默认构造函数 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
使矩阵处于什么状态?是0x0矩阵吗?
特别是,如果声明了一个变量 Eigen::MatrixXd A;
,我以后如何测试是否已将某些内容分配给 A
?用A.size()==0
,还是有什么特殊的测试?
A default constructor is always available, never performs any dynamic memory allocation, and never initializes the matrix coefficients.
请注意,使用默认构造函数时,动态矩阵也不会分配其大小。所以,
Eigen::MatrixXd a;
是一个0x0矩阵,而
Eigen::MatrixXd b(10, 10);
是一个10x10矩阵,系数未初始化;
是的,您可以检查矩阵是否仍然 0x0 以验证是否已将某些内容分配给它。
请注意,如果大小不是动态的,它将有定义的行数 and/or 列,这将使我们更难知道是否已为其分配了某些内容:您应该初始化值然后检查它们是否已更改。
"In particular, if a variable is declared
Eigen::MatrixXd A;
, how could I later test whether something has been assigned toA
?"
与相同的默认构造比较
if (A != Eigen::MatrixXd{})
// ...