2011-01-13 71 views
2

我該怎麼做?我試圖計算兩個數組在同一個索引處具有相同的TRUE/1值。正如你所看到的,我的代碼有多個bitarrays,並循環遍歷每一個,並將它們與另一個循環的compareArray進行比較。它似乎不是很有效率,我需要它。有效比較相同長度的兩個BitArrays

foreach (bitArrayTuple in bitarryList) { 
    for (int i = 0; i < arrayLength; i++) 
     if (bArrayTuple.Item2[i] && comparisonArray[i]) 
      bitArrayTuple.Item1++; 
} 

其中Item1是count,Item2是bitarray。

回答

1

沒有太多的辦法做到這一點,因爲BitArray不讓其內部數組的泄漏,因爲.NET沒有C++相當於const防止外部修改。你可能想從頭開始創建自己的類,或者,如果你覺得黑客入侵,可以使用反射來獲取BitArray中的私有字段。

+0

+1,是的,如果需要的是真正偉大的,然後寫自己的BitArray實施將路要走 – VinayC 2011-01-13 05:57:19

1

取決於元素的數量,BitVector32可能是可用的。這只是一個Int32比較。

如果沒有可能,你將需要得到位於每個BitArraym_array私人領域的int[]的保持。然後比較每個的int[](每次比較32位)。

相關問題