2012-02-16 3 views
2

Мне интересно, можно ли получить адрес отдельного элемента матрицы uBLAS Boost?Boost uBLAS Matrix Reference

Это

boost::numeric::ublas::matrix<char> bob(3,3); 
some_function(&bob[2][2]); 

Теперь, конечно, вторая линия не будет работать ... но я хотел бы, чтобы это.

Любые мысли?

Спасибо!

ответ

3

Не будет ли с использованием адреса возвращаемого значения следующего оператора будет проще? И независимо от макета?

reference operator() (size_type i, size_type j) 

Например:

some_function(&bob(2,2)); 
+0

Я не уверен, что следую за тобой? Не могли бы вы быть более явными или объяснительными? Извините :-( – Richard

+0

Добавлен пример ответа. – Anonymous

+0

Исправлены индексы, о которых идет речь в вопросе. – Richard

1

По умолчанию внутреннее представление матрицы представляет собой массив строк 1D.

some_function(&bob.data()[i*ncol+j] будет работать

+1

По умолчанию в uBLAS? Какая часть спецификации Boost uBLAS указывает, что это будет работать? – Richard

+0

m.data() Возвращает ссылку на базовое плотное хранилище. http://www.boost.org/doc/libs/1_46_0/libs/numeric/ublas/doc/container_concept.htm#matrix. Что касается хранилища, то существует 2 типа: row_major или column_major, по умолчанию - row_major. Я забыл, где это было указано. Я когда-то называл lapack подпрограммы с помощью ublas-матрицы, насколько мне известно, получить указатель 1D-массива на m.data(). – pem

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

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