【问题标题】:Why should you use a 2D array of structs?为什么要使用二维结构数组?
【发布时间】:2020-05-18 08:14:39
【问题描述】:

我很好奇是否有使用二维结构数组的情况,例如 f.e.:

typedef struct
{
 //member variables
}myStruct;

myStruct array2D[x][y]; 
//Uses cases of array2D[x][y]? Do we need them?

为什么要使用二维结构数组?

【问题讨论】:

  • 这个问题被否决的原因是因为它在某种意义上太笼统了吗?
  • struct RGB {float R; float G; float b}; struct RGB display [1920][1080];
  • @Leon 这可能被否决了,因为该问题显示的背景信息较少,研究工作量很大,并且因为“应该”问题在社区中通常被弃用。不幸的是,我经常在这里亲身经历。不要把它当作个人的。我认为这是一个很好的问题。
  • @RobertSsupportsMonicaCellio 啊,我明白了,这是其中之一

标签: c arrays multidimensional-array struct dimensions


【解决方案1】:

为什么要使用二维结构数组?

定义的结构基本上只是一种类型,就像任何其他类型一样(当然,任何类型都与其他类型不同,私有数据类型和标准数据类型之间存在差异;更不用说该类型对象之间的内存分配差异了) 你可以用它来声明对象。

您也可以问:为什么要使用charintdouble 二维数组?

它不仅仅是一种结构本身的东西。

在代码中拥有清晰的“结构”取决于上下文及其价值;所以以这种方式编码可以帮助你使你的代码更具可读性和清晰性,如果你需要大量的某种类型的对象,在这种情况下是一个结构。

也许您甚至想对一些对象进行分组和/或想以不同的方式对待它们。在这种情况下,多个数组维度是有益的,因为您可以显式地分别处理每个维度的对象。

正如 cmets 中提到的@buysbee

一个明显的例子是,将结构对象存储在二维数组中是有益的,即存储图片的像素。最好将“像素”结构对象存储在二维数组中,因为这样可以模拟图片的自然构造方式。

【讨论】:

  • 嗯,根据您的回答,您在需要时使用二维结构数组(即取决于上下文)?
  • 您可能想添加一个明显的用例:存储图像。每个像素都存储在struct 中,图像的所有像素都存储在二维数组中。大多数图像需要更多元信息,因此该数组可能是另一个 struct 中的一个元素。
  • @Leon 不。如果我看到按维度分离它们有好处,我会这样做。如果我有大量这种类型的对象,这可能是对它们进行不同的处理,或者只是通过将它们分成几个维度来增加可读性。
  • @thebusybee 非常感谢您提供的好例子。我把它纳入了答案。
【解决方案2】:

我们可以添加更多问题:为什么我们应该使用 3D、4D。 5D ...... 10000000D 数组的东西。

项目中使用的数据结构取决于要解决的问题和选择的算法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 2023-03-18
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多