0

使用以下代码,我可以访问指向矩阵的指针所在的行:

#include <iostream>
int main(void) {
    const int size = 10;
    float **mat = new float*[size];
    int i,j;
    for (i = 0; i != size; ++i) {
        mat[i] = new float[size];
        for (j = 0; j != size; ++j) {
            mat[i][j] = i * size + j;
        }
    }
    float *p = mat[size-1];
    for (i = 0; i != size; ++i) {
        std::cout << p[i] << " ";
    }
    std::cout << std::endl;
    return 0;
}

印刷:

90 91 92 93 94 95 96 97 98 99

有没有办法让我也可以访问该列?非常感谢你:)

编辑:对不起,当我的问题被误解时。我需要的是一个指向矩阵垫中列的指针。我不认为这是可能的,是吗?

EDIT2:我基本上需要的是一个指针,以便我可以进行转换:

__m128 *m_ptr = (__m128*) p;

每次额外的迭代都需要 O(n) ,因为我想对代码进行矢量化和加速,所以应该避免这种情况。行访问简单快捷。列访问也应该是可能的???!

4

2 回答 2

1

好吧,如果您想访问一行的元素(而不是列,这是您已经访问的),那应该很简单:

for (i = 0; i != size; ++i)
{
     std::cout << mat[i][size - 1] << " ";
}

顺便说一句,您的代码正在泄漏,因为您分配了从未释放的内存。

于 2013-02-06T16:59:57.753 回答
0

列中的元素不能保证在内存中一个接一个...

于 2013-02-06T17:02:39.727 回答