gpt4 book ai didi

c - 数据结构(C): big bricks small house,还是小砖头大房子?

转载 作者:行者123 更新时间:2023-12-01 23:15:59 24 4
gpt4 key购买 nike

假设我有一个 C 库,用于用 brick build 一个 house。与每个 brick 关联的是一组 doubleint ,对应于它的尺寸、重量、颜色以及它来自哪批 cargo ,等等。房子就是某种形式的有组织的砖 block 集合。我的房屋 build 库中的一些函数接收房子,但大多数函数接收并操作brickshouse 主要使用本地 brick 操作来构建,这些操作对应于添加/移除砖 block 等本地更改。

在我(虚弱、缺乏经验的)看来,有两种“自然”的方式来表示这个 house-made-of-brick 在数据结构方面的设置.

方法一:大透明砖,小房子。让每个 brick 结构包含每个关联的 doubleint 的字段,以及指向紧邻它的砖 block 的指针.在此设置中,与 house 相比,每个 brick 都是一个大结构(house 可能只是指向任何 的指针brick),整个事情只是一个指针的大网。

方法二:小不透明砖,大房子。让每个 brick 只包含一个整数 index 和一个指向它拥有的 house 的指针; house 然后包含 doubleint 的数组,brick 可以切入它们以获取它们数据,加上一些额外的数组/表,用于所有连接信息。通过这种方法,可以使用大型 house 结构来保存和管理资源,无论我们在代码中的哪个位置,每个 brick 都可以看到该结构。

问题:在什么情况下(如果有的话)方法 1 优于方法 2?

我非常喜欢方法 2,但很难准确地阐明是什么让它在客观上优于方法 1。在此先感谢您提供任何建议和/或指向适当阅读 Material 的指示.关于如何更好地表达我的问题的建议也非常受欢迎:)

最佳答案

您提出了两个极端,但介于两者之间的某些东西可能也行得通。例如,您可以将邻接信息存储在房屋中,但将有关颜色、重量、大小和来源的信息保存在砖 block 中。您还可以将源信息从 house 和 brick 结构中移出,并将其放入单独的结构中,例如表示源并包含指向砖的指针列表的结构。

在您说出要优化的目标之前,您无法客观地说出哪种方法更好。阿德米已经提到了两个可能的目标,但可能还有更多。然后问题也是您要优化的参数:它是性能吗?代码大小?运行时内存使用情况?代码的清晰度?

一旦您定义了目标,并且有两个或多个可供选择的替代实现方案,您就可以尝试实现所有这些方案,然后对它们进行基准测试。这会给你最客观的答案。

关于c - 数据结构(C): big bricks small house,还是小砖头大房子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59447612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com