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

C++ function that takes args Eigen sparse matrices

Eigen 库 provides/suggests 在函数中传递密集矩阵的多种方法,因此它适用于共享相同基数的不同类型,并避免复制(即 Ref<>、模板表达式)。

但是,我在本征文档或网上都没有找到任何与稀疏矩阵等价的东西。

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

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

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

简单地写一个模板函数取任何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();
}