默认构造函数Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
将矩阵保留在什么状态?它是0x0矩阵吗?
尤其是如果变量声明为Eigen::MatrixXd A;
,我以后如何测试是否已将某些内容分配给A
?使用A.size()==0
还是有一些特殊测试?
默认构造函数始终可用,从不执行任何动态内存分配,并且从不初始化矩阵系数。
注意,使用默认构造函数时,动态矩阵也不会分配大小。因此,
Eigen::MatrixXd a;
是一个0x0矩阵,而
Eigen::MatrixXd b(10, 10);
是一个10x10的矩阵,系数未初始化;
是,您可以检查矩阵是否为still 0x0,以验证是否已为其分配了某些内容。
请注意,如果大小不是动态的,它将具有定义的行数和/或列数,这将使您更难知道是否已为其分配了某些内容:您应该初始化值,然后检查它们是否已更改。
“特别是,如果变量声明为
Eigen::MatrixXd A;
,我以后如何测试是否已将某些内容分配给A
?“
比较相同的默认构造
if (A != Eigen::MatrixXd{})
// ...