特征向量构造函数初始化与逗号初始化
Eigen vector constructor initialization vs comma initialization
对于固定大小的特征向量(例如 Eigen::Vector3d
、Eigen::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 检查了它。
对于固定大小的特征向量(例如 Eigen::Vector3d
、Eigen::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 检查了它。