【问题标题】:Boost uBLAS Matrix ReferenceBoost uBLAS 矩阵参考
【发布时间】:2012-02-16 17:31:33
【问题描述】:

我想知道是否可以获取 Boost uBLAS 矩阵的单个元素的地址?

那是

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

现在,第二行当然行不通……但我愿意。

有什么想法吗?

谢谢!

【问题讨论】:

    标签: c++ boost matrix ublas boost-ublas


    【解决方案1】:

    使用后面的操作符返回值的地址不是更简单吗?并且独立于矩阵布局?

    reference operator () (size_type i, size_type j)
    

    例如:

    some_function(&bob(2,2));
    

    【讨论】:

    • 我不确定我是否关注你?你能更明确或更解释吗?对不起:-(
    • 修复了问题中的索引。
    【解决方案2】:

    默认情况下,矩阵的内部表示是一个以行为主的一维数组。

    some_function(&amp;bob.data()[i*ncol+j] 可以工作

    【讨论】:

    • 默认在 uBLAS 中? Boost uBLAS 规范的哪一部分表明这将起作用?
    • m.data() 返回对底层密集存储的引用。 boost.org/doc/libs/1_46_0/libs/numeric/ublas/doc/…。至于存储,有2种类型:row_major或column_major,默认为row_major。我忘了它是在哪里指定的。我曾经用 ublas 矩阵调用 lapack 例程,就我而言,通过 m.data() 工程获取一维数组的指针。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多