【发布时间】:2019-12-19 17:03:30
【问题描述】:
我在弄清楚我应该如何实现多个结构的嵌套时遇到问题,目标是有仓库,有仓库,有带架子的架子,架子上有物品的地方和它们的 2 位数 ID。现在我的代码看起来像这样:
#include<iostream>
struct place{
unsigned short place_[65545][2];
};
struct shelf{
place shelf_[128];
};
struct rack{
shelf rack_[128];
};
struct warehouse{
rack warehouse_[128];
shelf handy_warehouse_shelf_;
};
struct depot{
warehouse depot_[128];
rack handy_rack_;
shelf handy_depot_shelf_;
};
int main(){
depot name1;
name1.depot_[0].warehouse_[0].rack_[0].shelf_[0].place_[0][0]=1;
return 0;
}
并且无法弄清楚这是否是我理解结构如何工作或我如何访问嵌套数组中的特定“单元格”的问题。
【问题讨论】:
-
局部变量通常存储在堆栈中,这是有限的;在 Windows 上通常只有一个 MiB,在 Linux 上通常是 8 MiB。现在计算
depot结构的大小,看看是否可以将所有数据放入堆栈。 -
虽然我猜我上面的评论是您遇到的问题,但您实际上并没有说出它是什么,甚至没有提出问题。所以请阅读the help pages,阅读the SO tour,阅读how to ask good questions和this question checklist。
-
在尝试 17 万亿之前,您是否尝试过 两个 嵌套结构?
-
一个仓库大小为 70.39 TB。
-
问题不在于代码嵌套结构的方式;没关系。它是结果对象的 size。这是因为 设计 问题。例如,虽然可能有一两个地方可能需要容纳 65545 个项目,但几乎所有的地方少得多。其余的都一样。您需要创建可以调整自身大小以匹配它们所包含的元素数量的对象,而不是对大小进行硬编码。阅读
std::vector,它就是为这种情况而设计的。