相关疑难解决方法(0)

多维数组[] [] vs [,]

double[][] ServicePoint = new double[10][9]; // <-- gives an error (1)
double[,] ServicePoint = new double[10,9]; // <-- ok (2)
Run Code Online (Sandbox Code Playgroud)

他们的区别是什么?(1)产生错误,是什么原因?

double d = new double[9]
ServicePoint[0] = d;
Run Code Online (Sandbox Code Playgroud)

使用(2)将提示错误.为什么?

c# arrays multidimensional-array

424
推荐指数
5
解决办法
60万
查看次数

更快替代嵌套循环?

我需要创建一个数字组合列表.数字很​​小所以我可以使用byte而不是int.但是,它需要许多嵌套循环才能获得所有可能的组合.我想知道是否有更有效的方式来做我想要的事情.到目前为止的代码是:

var data = new List<byte[]>();
for (byte a = 0; a < 2; a++)
for (byte b = 0; b < 3; b++)
for (byte c = 0; c < 4; c++)
for (byte d = 0; d < 3; d++)
for (byte e = 0; e < 4; e++)
for (byte f = 0; f < 3; f++)
for (byte g = 0; g < 3; g++)
for (byte h = 0; h < …
Run Code Online (Sandbox Code Playgroud)

c# combinations

85
推荐指数
7
解决办法
1万
查看次数

在Java中初始化多维数组

声明多维数组并为其赋值的正确方法是什么?

这就是我所拥有的:

int x = 5;
int y = 5;

String[][] myStringArray = new String [x][y];

myStringArray[0][x] = "a string";
myStringArray[0][y] = "another string";
Run Code Online (Sandbox Code Playgroud)

java multidimensional-array

78
推荐指数
5
解决办法
40万
查看次数

如何声明二维字符串数组?

string[][] Tablero = new string[3][3];
Run Code Online (Sandbox Code Playgroud)

我需要一个3x3阵列安排来保存信息.我如何在C#中声明这个?

c# arrays jagged-arrays multidimensional-array array-initialization

75
推荐指数
10
解决办法
22万
查看次数

为什么我们都有锯齿状数组和多维数组?

  1. 锯齿状数组和多维数组之间有什么区别.彼此之间有什么好处?

  2. 为什么Visual Studio不允许我这样做

    MyClass[][] abc = new MyClass[10][20];
    
    Run Code Online (Sandbox Code Playgroud)

    (我们曾经在C++中这样做,但在C#中它用红色蠕动线强调[20] ..说无效的等级说明符)

    但很高兴

    MyClass[,] abc = new MyClass[10,20];
    
    Run Code Online (Sandbox Code Playgroud)
  3. 最后,我如何在一行中初始化它(就像我们在简单数组中一样{new xxx...}{new xxx....})

    MyClass[][,][,] itemscollection;
    
    Run Code Online (Sandbox Code Playgroud)

.net c# arrays visual-studio-2010

72
推荐指数
4
解决办法
4万
查看次数

为什么Array不是泛型类型?

Array 声明如下:

public abstract class Array
    : ICloneable, IList, ICollection, IEnumerable {
Run Code Online (Sandbox Code Playgroud)

我想知道为什么不是它:

public partial class Array<T>
    : ICloneable, IList<T>, ICollection<T>, IEnumerable<T> {
Run Code Online (Sandbox Code Playgroud)
  1. 如果它被声明为泛型类型会有什么问题?

  2. 如果它是泛型类型,我们还需要非泛型吗?如果我们愿意的话,它是否可以衍生出来Array<T>(如上所述)?

    public partial class Array: Array<object> { 
    
    Run Code Online (Sandbox Code Playgroud)

更新:

第二点对于不再使非泛型Array成为基本类型的假设也很重要.

c# generics types language-design

56
推荐指数
4
解决办法
3万
查看次数

为什么.NET中的多维数组比普通数组慢?

编辑:我向大家道歉.我实际上想要说"多维数组"时使用了"锯齿状数组"一词(如下面的例子所示).我为使用错误的名字道歉.我实际上发现锯齿状阵列比多维阵列更快!我已经为锯齿状阵列添加了测量值.

我试图用一个 盘陀今天的多维数组,当我注意到它的性能并不像我预期的那样.使用单维数组和手动计算索引要比使用2D数组快得多(几乎两倍).我使用1024*1024数组(初始化为随机值)编写了一个测试 ,进行了1000次迭代,我在我的机器上得到了以下结果:

sum(double[], int): 2738 ms (100%)
sum(double[,]):     5019 ms (183%)
sum(double[][]):    2540 ms ( 93%)
Run Code Online (Sandbox Code Playgroud)

这是我的测试代码:

public static double sum(double[] d, int l1) {
    // assuming the array is rectangular
    double sum = 0;
    int l2 = d.Length / l1;
    for (int i = 0; i < l1; ++i)
        for (int j = 0; j < l2; ++j)
            sum += d[i * l2 + j];
    return sum;
}

public static double sum(double[,] d) …
Run Code Online (Sandbox Code Playgroud)

.net arrays performance

49
推荐指数
3
解决办法
2万
查看次数

为什么ArrayLists的ArrayList不是多维的?

我最近出现在面试中,面试官问我一个关于Arrays和的问题ArrayList.

他问我,如果一个数组的数组可以是多维的,那么,为什么是ArrayListArrayList"不是多维?

例如:

// Multidimensional
int[][] array = new int[m][n]; 

// Not multidimensional
ArrayList<ArrayList<Integer>> seq = new ArrayList<ArrayList<Integer>>(); 
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我理解这个吗?

java arrays list arraylist multidimensional-array

34
推荐指数
5
解决办法
4281
查看次数

如何在1D阵列中"展平"或"索引"3D阵列?

我试图在我的游戏中将3D阵列压平为1D阵列中的"块"系统.这是一个3D块游戏,基本上我希望块系统几乎与Minecraft的系统相同(但是,这不是Minecraft克隆的任何措施).在我以前的2D游戏中,我使用以下算法访问了扁平化数组:

Tiles[x + y * WIDTH]
Run Code Online (Sandbox Code Playgroud)

然而,这显然不适用于3D,因为它缺少Z轴.我不知道如何在3D空间中实现这种算法.宽度,高度和深度都是常量(宽度和高度一样大).

x + y*WIDTH + Z*DEPTH吗?我的数学非常糟糕,我只是开始进行3D编程,所以我很丢失:|

PS.这样做的原因是我循环并从索引中获取相当多的东西.我知道1D阵列比多维阵列更快(我记得的原因是:P).即使这可能没有必要,我希望尽可能好的表现:)

.net c# arrays 3d flatten

28
推荐指数
7
解决办法
5万
查看次数

初始化锯齿状数组

我想用C#创建数组10*10*10 int[][][](不是int[,,]).

我可以写代码:

int[][][] count = new int[10][][];
for (int i = 0; i < 10; i++) {
    count[i] = new int[10][];
    for (int j = 0; j < 10; j++)
        count[i][j] = new int[10];
}
Run Code Online (Sandbox Code Playgroud)

但我正在寻找一种更美好的方式.可能是这样的:

int[][][] count = new int[10][10][10];
Run Code Online (Sandbox Code Playgroud)

.net c# jagged-arrays

18
推荐指数
3
解决办法
2万
查看次数