2014-03-06 158 views
0

我有以下代码,并且想知道哪个是最快的方法来复制_zobrist_hashEnPassant阵列?快速复制多维阵列

internal void InitHash() 
{ 
    Int32 i; 
    for (i = 0; i < 2; i++) 
     for (Int32 j = 0; j < 6; j++) 
      for (Int32 k = 0; k < 64; k++) 
       _zobrist[ i, j, k ] = HashRand(); 

    for (i = 0; i < 64; ++i) 
     _hashEnPassant[ i ] = HashRand(); 
} 

其原因是这是我的国际象棋引擎创建多个分析板和而不是从头重新创建新的主板我基本上复制现有的电路板。我遇到的问题是调用InitHash()方法或者只是简单复制太慢。

我看了看this,我不知道如何修改它以使用UInt64类型。

+0

什么是HashRand()?你真的需要叫它832次吗? – Max

回答

0

从这里:http://msdn.microsoft.com/en-us/library/z50k9bft%28v=vs.110%29.aspx

如果看起来像你只需要复制使用Array.com

Array.Copy(myObjArray, 0, myIntArray, 0, numElements); 

中包含numElements的数组元素的总数将是2 * 6 * 64?

只是为了显示来自网站和值的API声明可以使用:

public static void Copy(
    Array sourceArray, 
    int sourceIndex, 
    Array destinationArray, 
    int destinationIndex, 
    int length 
) 

值:

sourceIndex = 0 
destinationIndex = 0 
length = x*y*z (array dimension lengths)