2015-03-26 1 views
0
.

. Собственная библиотека предоставляет/предлагает множество способов передачи плотной матрицы в функцию, так что она работает для разных типов, которые имеют одну и ту же базу, и позволяет избежать копирования (т.е. Ref <>, шаблонные выражения).Функция C++, которая принимает args. Собственные разреженные матрицы.

Однако я не нашел ничего эквивалентного для разреженных матриц как в собственной документации, так и в Интернете.

У меня в основном есть следующий вопрос: Как написать функцию с общим интерфейсом, чтобы ее можно было вызвать как с объектами SparseMatrix, так и с MappedSparseMatrix, с потенциально разными аргументами шаблонов, без копирования?

Я пробовал выражение шаблона SparseMatrixBase с использованием аргументов, но я не мог заставить его работать.

Простой пример кода будет оценен.

+0

В разви филиале вы можете использовать 'реф <разреженная матрица <...>>' и 'Map <разреженная матрица <...>>', как с плотными объектами. Это также делает «MappedSparseMatrix» устаревшим. – ggael

+0

Это замечательно. Как насчет того, что я хочу поддерживать разреженные матрицы с разными параметрами шаблона, скажем, double/float, row major/col major? –

+0

Затем используйте функцию шаблона, используя 'SparseMatrixBase '. – ggael

ответ

1

Просто написать шаблонную функцию, принимая любой 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(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^