【问题标题】:How do I convert a 1-D index into a 2-D index如何将一维索引转换为二维索引
【发布时间】:2015-09-01 05:23:59
【问题描述】:

我有一个二维数组,我想用一维索引访问它的元素。

数组长度不同。 row 不同,但 col 始终为 8(Array[varies, 8])

查看this question and its answers ,好像无法正确访问元素。

这就是我想用一个索引访问元素的方式:

0 = (0, 0)        8 = (1, 0)        16 = (2, 0)
1 = (0, 1)        9 = (1, 1)        17 = (2, 1)
2 = (0, 2)        10 = (1, 2)       18 = (2, 2)
3 = (0, 3)        11 = (1, 3)       19 = (2, 3)
4 = (0, 4)        12 = (1, 4)       20 = (2, 4)
5 = (0, 5)        13 = (1, 5)       21 = (2, 5)
6 = (0, 6)        14 = (1, 6)       22 = (2, 6)
7 = (0, 7)        15 = (1, 7)       23 = (2, 7)

在这个例子中,我的数组是3x8。根据公式:

row = index % 8;
col = index / 3;

说索引13 将是:

row = 13 % 8 = 5 >> correct
col = 13 / 3 = 4 >> incorrect

那么我在这里错过了什么?

【问题讨论】:

  • 每列后列号加1,即每8条,所以需要col = index / 8

标签: arrays indexing


【解决方案1】:

尝试以下方法:

col = index / 8

您应该对 mod 和 div 使用相同的除数(在本例中为 8)。这样,它们就同步了。

在你的例子中,

col = 13 / 8 = 1

【讨论】:

  • 感谢您的回答。 3x3 的例子让我很困惑。
猜你喜欢
  • 2022-01-05
  • 2019-10-02
  • 1970-01-01
  • 2019-05-22
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多