代码之家  ›  专栏  ›  技术社区  ›  Coder-Man

如果矩形阵列的速度较慢,那么矩形阵列相对于锯齿形阵列的优势是什么?

c#
  •  -8
  • Coder-Man  · 技术社区  · 6 年前

    在Java中没有矩形数组,只有一种方法可以生成多维数组,例如: int[][] a = new int[10][10]; 是的。

    在c_中,不能这样做,只能使用矩形数组在一个语句中声明和定义所有维度的大小: int[,] a = new int[10,10]; 或者必须写下这个怪物:

    new int[10][] {new int[10], new int[10],new int[10],new int[10],new int[10],new int[10],new int[10],new int[10],new int[10],new int[10]} 是的。

    但是,矩形数组在访问它们的元素时速度较慢,所以,我的问题是,它们的优势是什么?为什么c语言开发人员不直接使用java方法呢?

    我知道矩形数组的内存将被分配到一个连续的块中,但我也不知道这样做的好处。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Damien_The_Unbeliever    6 年前

    .NET本身支持矩形和锯齿形数组。这取决于每种语言是否为其中一个或两个概念公开了简单的语法 1个 是的。

    visual basic(classic)支持矩形数组,但没有对锯齿数组的一级支持。

    在早期的C_中,预计很多代码要么使用矩形数组与VB代码进行互操作(或者,正如Hans所评论的那样,通常是COM),要么本身就是从VB翻译过来的代码。所以你想让C 支持 这样的排列很容易。

    老实说,我们不应该选择基于 纯粹地 我们相信它绝对会“表现最好”。通常还有很多其他决定会引导我们在锯齿形阵列上选择矩形阵列。也就是说,知道我们所得到的确实代表了一个矩形数据集可以使我们自己的逻辑更简单。一个更简单的理由 算法 在一条非关键的道路上往往是一个很大的好处。

    现在,如果我们不自己实现集合类,我们也不应该首先查看数组。


    1个 类似地,它公开的数组的下限不是 0 是的。在c_中没有简单的语法。