c++ - 如何在 C++ 中获取 3d 数组中的第 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}}
};
用户输入 x,y 坐标和方向,在该位置他们只能在 0-7 方向上移动。但是,每个位置只能朝着某个方向移动。因此,我正在制作这个数组以查看该方向是否在该 x,y 坐标的数组中。在我得到第 3 维数组(变成 1d 数组)后,我将查看用户输入方向是否在该数组中。例如:
{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}
错误:']' 标记之前的预期主表达式
所以我知道这种语法无效,还有其他方法可以实现这种操作吗?将第三维数组复制到一个新数组中。
解决方案
你可以使用std::copy
:
#include <algorithm>
#include <iterator>
//...
int new_array[8];
std::copy(std::begin(array[1][1]),
std::end(array[1][1]),
new_array);
使用完成std::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];
推荐阅读
- excel - 具有多个条件的唯一计数
- java - 如何用数学运算绑定两个 SimpleDoubleProperty?
- docker - 简单的烧瓶服务在 docker 容器外不响应
- vim - SPF VIM 语法默认开启
- .net - 浏览按钮存储路径作为变量以在其他地方使用
- bash - 使用 bash 和 awk 删除不包含字符串列表之一的行
- java - 将 Android Studio 项目迁移到桌面应用程序
- twitter-bootstrap - Bootstrap 4 Cards - 如何使卡片高度相同以及添加水平填充/间距
- firebase - Firebase 云功能/通知
- r - 包构建/安装期间“找不到对象”