【问题标题】:Eigen vector constructor initialization vs comma initialization特征向量构造函数初始化与逗号初始化
【发布时间】:2021-12-23 11:17:09
【问题描述】:

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

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

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

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

出于速度或其他原因,这两种方法中的哪一种更可取?或者他们是平等的?

【问题讨论】:

  • 或其他原因 我的意思是其中一个是单行代码,另一个是两行代码。 IMO 仅出于这个原因,我会使用前者。如果您选择这样做,后者可能会让您更轻松地切换类型。虽然这一切都带着一点盐,我从来没有用过Eigen,但std::vector&lt;int&gt; a{0, 1, 2}比两行变体更好

标签: c++ vector initialization eigen


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多