特征向量构造函数初始化与逗号初始化

Eigen vector constructor initialization vs comma initialization

对于固定大小的特征向量(例如 Eigen::Vector3dEigen::Vector4f),可以选择使用构造函数初始化向量,如下所示:

Eigen::Vector3d a(0.0, 1.0, 2.0);

然而,Eigen 还提供了一种使用逗号初始化一般 Eigen 矩阵的方法,可以在这种情况下使用:

Eigen::Vector3d b;
b << 0.0, 1.0, 2.0;

出于速度或其他原因,这两种方法中的一种更可取吗?还是它们相等?

第一个版本的一个优点是如果你传递了错误数量的参数,它会在编译时失败,例如因为您将 Vector2d 误输入为 Vector3d。

在性能方面,编译器能够对两者进行相同的优化。用 GCC 检查了它。