处理增强ublas稀疏OR密集矩阵的API

时间:2011-09-03 14:18:45

标签: c++ boost sparse-matrix ublas

我对Boost ublas文档感到有点困惑。我似乎并不清楚稀疏和密集矩阵类共享一个共同的父类 - 我相信这是设计的。但是,我如何设计一个可以接受稀疏或密集矩阵的API,假设它只需要使用operator()访问器对矩阵的条目进行操作。例如,像这样:

float doMatrixMath(matrix_base<float> m) 
{
  return m(1,1)+m(2,2);
}

也许我对此的看法是错误的。关于如何考虑ublas类的对象建模的任何指导将不胜感激!

1 个答案:

答案 0 :(得分:1)

模板很遗憾。您可以使用非常通用的类型,或者深入挖掘并找到更具体的内容,但总体思路是:

template< typename MatrixType >
float doMatrixMath(MatrixType m) 
{
  return m(1,1)+m(2,2);
}

当然,这可以通过更具体的类型和返回值检测来增强......