2012-02-16 140 views
2

我想知道是否有可能获得Boost uBLAS矩阵的单个元素的地址?Boost uBLAS矩阵参考

也就是说

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 2012-04-19 04:56:09

+0

新增答案示例。 – Anonymous 2012-04-19 07:01:07

+0

修正问题中有问题的索引。 – Richard 2012-04-19 15:08:51

1

默认情况下,矩阵的内部表示是一个主要的1D数组。

some_function(&bob.data()[i*ncol+j]

+1

默认情况下的uBLAS? Boost uBLAS规范的哪一部分表明这会起作用? – Richard 2012-04-19 04:55:26

+0

m.data()返回对底层密集存储的引用。 http://www.boost.org/doc/libs/1_46_0/libs/numeric/ublas/doc/container_concept.htm#matrix。至于存储,有两种类型:row_major或column_major,默认是row_major。我忘了它在哪里指定。我曾经用ublas矩阵称为lapack例程,就我而言,通过m.data()函数获得1D数组的指针。 – pem 2012-05-04 08:50:58