什么数组结构在 C# 中而不在 C/C++/Java 中?
What array structure is in C# but not in C/C++/Java?
我正在准备考试,但有一个问题我找不到答案。读了一堆文章,我发现最接近的是
Arrays in C# come in three flavors: single-dimensional, multidimensional rectangular arrays (like the C++ multidimensional arrays), and jagged arrays (arrays of arrays).
所以这表明 C++ 中没有锯齿状数组,但它存在于 Java 中。
另一件事是,只有 C# 可以有非零数组下界(如 a[-1,3] 或 a[4,9]。它会被认为是不同的数组结构吗?
C++
- 所以这表明 C++ 中没有锯齿状数组
通过相同的阅读,文本块表明 C++ 没有一维数组。这显然是荒谬的!
C++ 两者都有...你显然可以创建一个 int**
,它是一个指向指针的指针(所以一个 "array" 的指针,所以一个 "array" 的 "arrays"),就像在 C# 中一样,你可以有一个 int[][]
,这是一个 int[]
的数组。对于 C++,请参阅各种示例 here. Note that this syntax is more C than C++... In C++ you should use std::array
, like here.
- 另一件事是只有 C# 可以有非零数组下界(如 a[-1,3] 或 a[4,9])
这在 C++ 中不存在...它们在 C# 中通过实现多维数组的相同代码在内部实现,并且由于历史原因而存在(与旧版本 VB 伪兼容)
Java
Java 没有多维数组(参见 here)。它确实有锯齿状数组,有一个技巧:如果你愿意,你可以初始化一个锯齿状数组,如果它们有不同的 sizes/some个可以是null
,可以手动初始化。
int[][] num = new int[4][2];
对
int[][] num = new int[4][];
num[0] = new int[1];
num[1] = new int[2];
num[2] = new int[3];
num[3] = new int[4];
所以最后
C# Java C++
single-dimensional array x x x
multi-dimensional array x x
si.di. non-zero based array x
mu.di. non-zero based array x
jagged array x x x
我正在准备考试,但有一个问题我找不到答案。读了一堆文章,我发现最接近的是
Arrays in C# come in three flavors: single-dimensional, multidimensional rectangular arrays (like the C++ multidimensional arrays), and jagged arrays (arrays of arrays).
所以这表明 C++ 中没有锯齿状数组,但它存在于 Java 中。 另一件事是,只有 C# 可以有非零数组下界(如 a[-1,3] 或 a[4,9]。它会被认为是不同的数组结构吗?
C++
- 所以这表明 C++ 中没有锯齿状数组
通过相同的阅读,文本块表明 C++ 没有一维数组。这显然是荒谬的!
C++ 两者都有...你显然可以创建一个 int**
,它是一个指向指针的指针(所以一个 "array" 的指针,所以一个 "array" 的 "arrays"),就像在 C# 中一样,你可以有一个 int[][]
,这是一个 int[]
的数组。对于 C++,请参阅各种示例 here. Note that this syntax is more C than C++... In C++ you should use std::array
, like here.
- 另一件事是只有 C# 可以有非零数组下界(如 a[-1,3] 或 a[4,9])
这在 C++ 中不存在...它们在 C# 中通过实现多维数组的相同代码在内部实现,并且由于历史原因而存在(与旧版本 VB 伪兼容)
Java
Java 没有多维数组(参见 here)。它确实有锯齿状数组,有一个技巧:如果你愿意,你可以初始化一个锯齿状数组,如果它们有不同的 sizes/some个可以是null
,可以手动初始化。
int[][] num = new int[4][2];
对
int[][] num = new int[4][];
num[0] = new int[1];
num[1] = new int[2];
num[2] = new int[3];
num[3] = new int[4];
所以最后
C# Java C++
single-dimensional array x x x
multi-dimensional array x x
si.di. non-zero based array x
mu.di. non-zero based array x
jagged array x x x