首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用一个变量导航多维数组

使用一个变量导航多维数组
EN

Stack Overflow用户
提问于 2019-08-10 22:21:06
回答 3查看 574关注 0票数 3

我有一个3D数组,我需要使用一个int在这个数组中找到一个int。

我的阵列:

代码语言:javascript
复制
int arrayOne[3][3] = {
    {1,2,3},
    {4,5,6},
    {7,8,9}
};

我需要能够使用单个int导航数组,如下所示:

代码语言:javascript
复制
int i = 4;
cout << arrayOne[4];

这个会打印出5个。

这样做是可能的,还是另一种方式呢?

我开始用3D数组编写代码,如果不需要的话,我真的不想重写所有的东西。

我在谷歌上搜索过,没有找到解决方案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-10 23:02:26

我需要能够使用单一的int来导航数组,比如:int i = 4;cout << arrayOne[4];,可以这样做

是的,是:

代码语言:javascript
复制
int arrayOne[3][3] {
  {1,2,3},
  {4,5,6},
  {7,8,9},
};

int* array = arrayOne[0];
std::cout << array[4];
票数 3
EN

Stack Overflow用户

发布于 2019-08-10 22:24:15

您可以将单个int封装在数组的大小(在选定的维度上):

代码语言:javascript
复制
arrayOne[i / 3][i % 3]  // wrapping around the size of the inner arrays

为了澄清这里发生的事情:

  • i = 0 => i/3 = 0, i%3 = 0
  • i = 1 => i/3 = 0, i%3 = 1
  • i = 2 => i/3 = 0, i%3 = 2
  • i = 3 => i/3 = 1, i%3 = 0
  • i = 4 => i/3 = 1, i%3 = 1
  • i = 5 => i/3 = 1, i%3 = 2
  • i = 6 => i/3 = 2, i%3 = 0
  • i = 7 => i/3 = 2, i%3 = 1
  • i = 8 => i/3 = 2, i%3 = 2

您可以看到,在(i/3)或(i%3)溢出之前,我可以使用3*3不同的值,这是完全合理的。

反向操作是将第一个坐标乘以3,然后添加第二个坐标:

代码语言:javascript
复制
(i/3) * 3 + (i%3) == i

知道如何在两个“索引系统”之间切换,编写一个将2数组转换为一维数组的循环将是非常简单的。

我在这里发现( 2D !) 线圈的图片很有用,因为线圈是一条跨越2D区域的一维导线:

编辑:请务必也签出https://stackoverflow.com/a/57446254/1899494

票数 5
EN

Stack Overflow用户

发布于 2019-08-10 22:27:39

用两个for循环迭代一个二维数组,一个嵌套在另一个循环中。实际上,您甚至不需要一个变量,您只需在每次迭代的索引中cout数字即可。如果要使用单个索引执行此操作,请将二维数组转换为一维数组。

代码语言:javascript
复制
    int arr[3][3] = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
          };

    int singleArr [arr.length*arr[0].length];
    int counter = 0;

    for (int i = 0; i < sizeof(arr)/4; i++) {
        for (int j = 0; j < sizeof(arr[0])/4; j++) {
            singleArr[counter] = arr[i][j];
            counter++;
        }
    }
    std::cout<<singleArr[4];
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57446071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档