gpt4 book ai didi

c - 如何在 C++ 中将 2D 数组映射到 1D 数组中? (列主)

转载 作者:行者123 更新时间:2023-11-30 14:21:38 26 4
gpt4 key购买 nike

设 W 为二维数组的宽度,H 为高度。使用行主布局,我可以这样做:

const int W = 3, H=2;
int m[H][W] = {{1,2,3}, {4,5,6}};
int* oneD = &m[0][0];
assert(oneD[1*W + 2] == m[1][2]); // element 6, y=1, x=2

但是专栏专业怎么样,有什么想法吗?

最佳答案

在 C 内部使用行主要方法(m 在内存中连续布置为 1,2,3,4,5,6),以便您可以直接用 oneD 表示示例。然而,列优先布局不能表示得如此简单,因为 C 内部使用行优先方法。因此,要获得正确的列主要方法,只需使用以下

#include <stdio.h>
#include <iostream>
int main() {
const int W = 3, H=2;
int m[H][W] = {{1,2,3}, {4,5,6}};
int* oneD = new int[H*W];
for(int i=0; i<W; i++)
for(int j=0; j<H; j++)
oneD[H*i+j]=m[j][i];
for(int i=0; i<H*W; i++)
std::cout<<oneD[i]<<" ";
return 0;
}

关于c - 如何在 C++ 中将 2D 数组映射到 1D 数组中? (列主),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14591909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com