Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C+中的3d数组中获取三维数组+;?_C++_Multidimensional Array - Fatal编程技术网

C++ 如何在C+中的3d数组中获取三维数组+;?

C++ 如何在C+中的3d数组中获取三维数组+;?,c++,multidimensional-array,C++,Multidimensional Array,用户输入x、y坐标和方向,在该位置他们只能沿0-7方向移动。但是,每个位置只能朝某个方向移动。所以我做这个数组是为了看看这个方向是否在x,y坐标的数组中。在我得到三维数组(变成1d数组)后,我将查看用户输入方向是否在该数组中。 例如: 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},

用户输入x、y坐标和方向,在该位置他们只能沿0-7方向移动。但是,每个位置只能朝某个方向移动。所以我做这个数组是为了看看这个方向是否在x,y坐标的数组中。在我得到三维数组(变成1d数组)后,我将查看用户输入方向是否在该数组中。 例如:

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}}
};
我试过:

 {3,4,5} at 1x1 // then check if direction is in this array
错误:必须使用大括号内的初始值设定项初始化数组

 int new_array[8] = array[1][1];
错误:在']'标记之前应该有主表达式
所以我知道这个语法是无效的,还有其他方法来实现这样的操作吗?
将三维数组复制到新数组中。

无法获得这样的数组的列或列。。。 如果定义基本数组,则必须导航单元格并指定值

 int new_array = array[1][1][]; // {3,4,5}
intmain(){
智力测验[2][3][2]={
{
{1, 2},
{3, 4},
{5, 6}
}, 
{
{7, 8}, 
{9, 10}, 
{11, 12}
}
};
intz[2];
对于(int i=0;i<2;++i){
对于(int j=0;j<3;++j){
对于(int k=0;k<2;++k){
z[k]=试验[i][j][k];
}
}
}
对于(int k=0;k<2;++k)
{
cout您可以使用:


不清楚问题出在哪里。是否要从3d阵列复制到其他阵列?是否要将数据从
[1,2,3,4,5,6,7,8]
更改为
[3,4,5]
?到底是什么问题?您的第一个代码片段工作得很好。我试图复制三维数组,然后在用户输入值仍不清楚的数组中执行if in。因此,您将用户设置为{0,0,0},他输入x=0,y=0,coord=5之类的内容,这意味着我们希望在[0][0][5]处更改z值?或数组中的值表示与其他数组标记的某种关系,其数据是一些图形?我们需要一些示例,您想如何使用它来定义3D?谢谢您的回答,这就是我正在寻找的for@Mcmx385不客气!您还可以看看如何使用
std::array
类似的事情。@Mcmx385我是使用
std::array
作为选项添加的。我必须承认,我花了一些时间才弄对大括号。:-)
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;
#include <algorithm>
#include <iterator>

//...

    int new_array[8];

    std::copy(std::begin(array[1][1]),
              std::end(array[1][1]),
              new_array);
#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];