作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将任意特征向量/数组类型的内容转换为 std::array。我从 Eigen 文档中阅读了这一部分 http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html所以这是我的功能:
template<typename DERIVED>
std::array<typename Eigen::DenseBase<DERIVED>::Scalar, Eigen::DenseBase<DERIVED>::RowsAtCompileTime>
toStl (const Eigen::DenseBase<DERIVED>& input)
{
... // Do conversion
}
现在的问题是,当我从 input 参数类型中删除 & 符号以获取拷贝时,我得到一个空的 input 变量。它包含系数 0 的一些虚假值,其余为零。
当我通过引用获取参数时,一切正常。谁能告诉我为什么?
PS.:对于那些可能想知道我为什么要复制的人;是否建议在本次演讲中帮助优化器:http://www.youtube.com/watch?v=eR34r7HOU14 (下半场结束)
最佳答案
DenseBase<> 类是一个空基类,因此创建该类型的对象没有意义。所以如果你真的想按值传递输入,那么它的类型必须是 DERIVED 而不是 DenseBase。尽管如此,按值传递它听起来仍然很奇怪,而您的函数的唯一目的是制作另一个拷贝。
关于c++ - Eigen 库 : Take a copy of a templated function parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17391924/
我是一名优秀的程序员,十分优秀!