API, который обрабатывает Ublas разреженных ИЛИ плотных матриц - PullRequest
1 голос
/ 03 сентября 2011

Я немного озадачен документацией Boost Ublas.Мне не кажется очевидным, что классы разреженных и плотных матриц имеют общий родительский класс, который, как мне кажется, задуман.Но тогда как я могу спроектировать API, который может принимать либо разреженную, либо плотную матрицу, предполагая, что он должен работать только с записями матрицы, используя, например, метод доступа operator ().Например, что-то вроде этого:

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

Возможно, мои мысли об этом ошибочны.Будем благодарны за любые рекомендации относительно того, как думать об объектном моделировании классов ublas!

1 Ответ

1 голос
/ 03 сентября 2011

Шаблоны к сожалению. Вы можете использовать очень общий тип или покопаться и найти что-то более конкретное, но общая идея такова:

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

Конечно, это может быть улучшено более конкретным типом и обнаружением возвращаемого значения ...

...