采用args特征稀疏矩阵的C ++函数

时间:2015-03-26 08:28:30

标签: c++ function sparse-matrix eigen

特征库提供/建议在函数中传递密集矩阵的多种方式,以使其适用于共享相同基础的不同类型,并避免复制(即Ref<>,模板表达式)。

但是,我没有在本征文档或在线中找到与稀疏矩阵等价的东西。

我基本上有以下问题: 如何使用通用接口编写函数,以便可以使用SparseMatrix或MappedSparseMatrix对象调用可能不同的模板参数,而无需复制?

我已尝试使用派生参数的SparseMatrixBase模板表达式,但我无法使其工作。

一个简单的示例代码将不胜感激。

1 个答案:

答案 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();
}