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