在Eigen
文档中,我看到了很多这些:
Array (const Scalar &val0, const Scalar &val1)
Array (const Scalar &val0, const Scalar &val1, const Scalar &val2)
Array (const Scalar &val0, const Scalar &val1, const Scalar &val2, const Scalar &val3)
根据文档(http://eigen.tuxfamily.org/dox/classEigen_1_1Array.html),这些构造函数"构造一个具有给定系数的初始化N
D向量"。
这是什么意思?如果我做数组(1,2,3),结果是什么?
具体来说,它在每个维度中放置了什么系数,以及每个维度中的数组有多大?根据文档,构造函数Array(1,2,3)
应构造一个3D数组,并使用"给定系数"初始化其内容。结果应该如何?
答案 0 :(得分:2)
构造函数用于固定大小的数组。假设声明为Eigen::Array3i
,那么您提到的构造函数初始化一个1D int数组,其中三个元素初始化为指定的值。
答案 1 :(得分:0)
这些构造允许您创建大小最大为4的数组:
Eigen::Array<int, 1, 4> a(1, 2, 3, 4)
如果您尝试使用除N(1-4) x 1
数组之外的任何内容进行初始化,则Eigen将抛出编译错误。例如:
Eigen::Array<int, 1, 3> a(1, 2, 3) //Fine
Eigen::Array<int, 3, 1> a(1, 2, 3) //Fine
Eigen::Array<int, 3, 3> a(1, 2, 3) //Compile error
error: ‘THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE
我不会像这样初始化它们。有一个关于Eigen初始化here的教程,它为如何初始化数组提供了很好的建议,例如:
Eigen::Array33 a;
a << 1, 2, 3, 4 ...
其中包含文档here。
或者您可以使用以下特殊初始化:
Eigen::ArrayXXf a = Eigen::ArrayXXf::Zero(1, 4) //0, 0, 0, 0