使用以下代码,我可以访问指向矩阵的指针行:
#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),这应该避免,因为我想要矢量化和加速代码。行访问简单快捷。列访问也应该可以???!
答案 0 :(得分:1)
好吧,如果你想访问行的元素(不是列,这是你正在访问的那个),那应该很简单:
for (i = 0; i != size; ++i)
{
std::cout << mat[i][size - 1] << " ";
}
顺便说一句,您的代码正在泄漏,因为您分配了永不释放的内存。
答案 1 :(得分:0)
列中的元素不能保证在内存中一个接一个地......