特征库提供/建议在函数中传递密集矩阵的多种方式,以使其适用于共享相同基础的不同类型,并避免复制(即Ref<>,模板表达式)。
但是,我没有在本征文档或在线中找到与稀疏矩阵等价的东西。
我基本上有以下问题: 如何使用通用接口编写函数,以便可以使用SparseMatrix或MappedSparseMatrix对象调用可能不同的模板参数,而无需复制?
我已尝试使用派生参数的SparseMatrixBase模板表达式,但我无法使其工作。
一个简单的示例代码将不胜感激。
答案 0 :(得分:3)
只需编写一个采用任何SparseMatrixBase<Derived>
的模板函数,例如:
template<typename Derived>
void foo(const SparseMatrixBase<Derived> &a_mat) {
const Derived &mat(a_mat.derived());
SparseMatrix<typename Derived::Scalar> tr_mat = mat.transpose();
}