首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中获取三维数组?

如何在C++中获取三维数组?
EN

Stack Overflow用户
提问于 2021-02-11 17:03:43
回答 2查看 134关注 0票数 1
代码语言:javascript
复制
int array[3][3][8] = {
    {{3, 4, 5}, {3, 5, 7}, {5, 6, 7}},
    {{1, 3, 5}, {0, 1, 2, 3, 4, 5, 6, 7}, {1, 5, 7}},
    {{1, 2, 3}, {1, 3, 7}, {0, 1, 7}}
};

用户输入x,y坐标和方向,在那个位置,他们只能向0-7方向移动.然而,每个位置只能朝某个方向移动。因此,我正在制作这个数组,看看这个方向是否在x,y坐标的数组上。在得到三维数组(变成一维数组)之后,我将查看用户输入方向是否在该数组中。例如:

代码语言:javascript
复制
 {3,4,5} at 1x1 // then check if direction is in this array

我试过:

代码语言:javascript
复制
 int new_array[8] = array[1][1];

错误:数组必须用大括号括起来的初始化器初始化。

代码语言:javascript
复制
 int new_array = array[1][1][]; // {3,4,5}

错误:“]”令牌之前的预期主表达式

所以我知道这个语法是无效的,还有其他方法来实现这样的操作吗?将三维数组复制到新数组中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-11 17:49:10

你可以用std::copy

代码语言:javascript
复制
#include <algorithm>
#include <iterator>

//...

    int new_array[8];

    std::copy(std::begin(array[1][1]),
              std::end(array[1][1]),
              new_array);

使用std::array完成

代码语言:javascript
复制
#include <array>

// ...

    std::array<std::array<std::array<int, 8>, 3>, 3> array = {{
        {{
            {3,4,5},
            {3,5,7},
            {5,6,7}
        }},
        {{
            {1,3,5},
            {0,1,2,3,4,5,6,7},
            {1,5,7}
        }},
        {{
            {1,2,3},
            {1,3,7},
            {0,1,7}
        }},
    }};

    std::array<int, 8> new_array = array[1][1];

    // the same result but simpler:

    auto new_array = array[1][1];
票数 1
EN

Stack Overflow用户

发布于 2021-02-11 17:14:56

你不可能得到这样的数组.如果您定义了一个基本数组,那么您必须导航单元格并指示值。

代码语言:javascript
复制
int main() {
    int test[2][3][2] = {
                            {
                                {1, 2},
                                {3, 4},
                                {5, 6}
                            }, 
                            {
                                {7, 8}, 
                                {9, 10}, 
                                {11, 12}
                            }
                        };
    int z[2]; 
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            for (int k = 0; k < 2; ++k) {
                z[k] = test[i][j][k];
            }
        }
    }

    for (int k = 0; k < 2; ++k)
    {
        cout << "z[" << k << "] = " << z[k] << endl;
    }
    return 0;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66159303

复制
相关文章

相似问题

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