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

C++ function that takes args Eigen sparse matrices

本文关键字:C++ 函数 args 特征 采用      更新时间:2023-10-16

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

然而,无论是在特征文档中还是在网上,我都没有发现任何与稀疏矩阵等效的东西。

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

我尝试过使用派生参数的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();
}