gpt4 book ai didi

c++ - 将 Eigen 对象作为参数传递时的指针与引用差异

转载 作者:太空狗 更新时间:2023-10-29 23:52:11 26 4
gpt4 key购买 nike

如果一个函数以特征矩阵作为参数,那么它们之间的区别是什么:

void foo(Eigen::MatrixXd& container){
for(i=0;i<container.rows();i++){
for(j=0;j<container.cols();j++){
container(i,j)=47;
}
}
}

void foo(Eigen::MatrixXd* container){
for(i=0;i<container->rows();i++){
for(j=0;j<container->cols();j++){
container->coeffRef(i,j)=47;
}
}
}

Eigen documentation ,他们只提出第一种方法——这是否意味着这种方法有任何优势?在第一种情况下传递 Matrix 引用时不使用 const 有什么缺点?

最佳答案

引用很好,因为没有空引用这样的东西,所以使用引用参数可以降低有人使用无效值调用您的函数的风险。

另一方面some coding standards建议使您打算修改的参数成为指针而不是非常量引用。这会强制调用者显式获取他们传递的任何值的地址,以便更明显地看出值将被修改。指针与非常量引用的选择由您决定。

但是,如果您不打算修改参数,那么将其设为常量引用绝对是可行的方法。它避免了传递无效指针的问题,允许您传递临时值,并且调用者不关心参数是否通过引用获取,因为它不会被修改。

关于c++ - 将 Eigen 对象作为参数传递时的指针与引用差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17030332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com