将 ArrayXd 传递给 const VectorXd& 和 const Ref<const VectorXd>&
Passing ArrayXd to const VectorXd& and const Ref<const VectorXd>&
我对这两个函数的效率的理解是否正确?
VectorXd v;
void Foo(const ArrayXd&);
void Boo(const Ref<const ArrayXd>&);
// a temporary is created?
Foo(v);
// no temporary is created?
Boo(v);
此外,我还在 eigen's doc 中看到一些签名,例如 Boo
,但没有 &
。它与上面的 Boo
有什么实际区别吗?
是的,你的理解是正确的。
关于 Boo
的签名,请参阅此 answer。
我对这两个函数的效率的理解是否正确?
VectorXd v;
void Foo(const ArrayXd&);
void Boo(const Ref<const ArrayXd>&);
// a temporary is created?
Foo(v);
// no temporary is created?
Boo(v);
此外,我还在 eigen's doc 中看到一些签名,例如 Boo
,但没有 &
。它与上面的 Boo
有什么实际区别吗?
是的,你的理解是正确的。
关于 Boo
的签名,请参阅此 answer。