gpt4 book ai didi

c++ - 访问特征矩阵的行 vector 时复制或引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:52:45 24 4
gpt4 key购买 nike

我正在处理使用 Eigen 的代码矩阵库。我注意到在整个代码中,都有如下访问器:

RowVector3f V(size_t vertex_index) const
{
return mymatrix.row(vertex_index);
}

使用返回 const ref 的访问器不是更好吗? Eigen 有可能吗?或者可能只是将指向内部 float 的指针返回到行开始并将其转换为 vector (当然假设匹配行优先布局)?

最佳答案

在 Eigen 中,mymatrix.row(vertex_index) 返回一个 Block(假设 mymatrix 是一个 Matrix3f)。 Block 对象本质上是指向原始数据的指针。在您的例子中,此代理被复制到 RowVector3f 中。幸运的是,对于这种固定大小的小对象,编译器很容易优化掉这个额外的拷贝。所以我不会打扰。

在更一般的情况下,我会重写 V 方法以返回 MatrixXf::RowXpr(这是 Block<...> 的正确类型定义)。

关于c++ - 访问特征矩阵的行 vector 时复制或引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13912383/

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