具有动态尺寸的本征矩阵的默认初始状态

问题描述 投票:0回答:2

默认构造函数Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>将矩阵保留在什么状态?它是0x0矩阵吗?

尤其是如果变量声明为Eigen::MatrixXd A;,我以后如何测试是否已将某些内容分配给A?使用A.size()==0还是有一些特殊测试?

c++ eigen
2个回答
0
投票

来自documentation

默认构造函数始终可用,从不执行任何动态内存分配,并且从不初始化矩阵系数。

注意,使用默认构造函数时,动态矩阵也不会分配大小。因此,

Eigen::MatrixXd a;

是一个0x0矩阵,而

Eigen::MatrixXd b(10, 10);

是一个10x10的矩阵,系数未初始化;

是,您可以检查矩阵是否为still 0x0,以验证是否已为其分配了某些内容。

请注意,如果大小不是动态的,它将具有定义的行数和/或列数,这将使您更难知道是否已为其分配了某些内容:您应该初始化值,然后检查它们是否已更改。


0
投票

“特别是,如果变量声明为Eigen::MatrixXd A;,我以后如何测试是否已将某些内容分配给A?“

比较相同的默认构造

if (A != Eigen::MatrixXd{})
    // ...
© www.soinside.com 2019 - 2024. All rights reserved.