c++ - 接受矩阵 col 和向量的特征模板函数
问题描述
我不明白如何编写同时接受向量和矩阵列的模板化函数?
例如:
template<typename T>
void foo(
const Eigen::MatrixX<T>& M){
}
int main(){
Eigen::VectorX<double> v(3);
Eigen::MatrixX<double> m(4,3);
foo(m); // fine
foo(m.col(0)); // broken
foo(m.row(0)); // broken
foo(v); // broken
}
只有foo(m);
没问题。
我见过使用预定义类型执行此操作的示例,也见过探索模板的示例。他们都没有展示如何使用模板函数解决所描述的任务。
编辑: 我也想传递动态大小向量,但不是必须的,固定大小
解决方案
我可以使用MatrixBase
:
#include <Eigen/Dense>
template<typename T>
void foo(const Eigen::MatrixBase<T>& M){}
int main(){
Eigen::Vector3d v(3);
Eigen::Matrix<double,4,3> m(4,3);
Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> q(5,6);
foo(m);
foo(m.col(0));
foo(m.row(0));
foo(v);
foo(q);
}
推荐阅读
- html - 面临问题引导菜单分区
- mysql - 当我的 column_string 有字母时,如何使用 ORDER BY column_string like column_int?
- python - 如何在 Django 中的模板中渲染?
- latex - 超过 Tex 容量 [字符串数 = 2078043]
- php - 如何在没有输入事件的情况下向 viber 发送消息?
- python-3.x - TypeError:在 SVM 训练期间,只能将 size-1 数组转换为 Python 标量
- amazon-web-services - 错误:连接 ECONNREFUSED 3.15.138.43:8080 我需要 IAM AWS_ACCESS_KEY_ID 吗?
- reactjs - 在 React 中取消 Axios 获取请求
- javascript - 为什么我的排序脚本工作不一致?
- javascript - 当 node.js 以块的形式出现时修改数据