2011-01-13 31 views
2

どうすればよいですか?私は両方の配列が同じインデックスでTRUE/1の同じ値を持つときにカウントしようとしています。ご覧のように、私のコードは複数のビット配列を持ち、それぞれをループしてcompareArrayと別のループを比較しています。それは非常に効率的ではないようで、私はそれが必要です。同じ長さの2つのBitArrayを効率的に比較する

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

ここで、Item1はカウントであり、Item2はビット配列です。

答えて

1

BitArrayは内部配列リークを起こさないため、.NETには外部修正を防ぐためにconstのC++に相当するものがないため、これを行う方法はあまりありません。独自のクラスを最初から作成することもできますし、ハッキングのように感じる場合は、リフレクションを使用してBitArrayのプライベートフィールドを取得することもできます。

+0

+1、必要性は本当に素晴らしいYESである場合、自身のBitArrayの実装を書くことは、これに – VinayC

1

要素数に応じて、BitVector32を使用することができます。それは単純にInt32の比較になります。

可能であれば、のm_arrayプライベートフィールドにあるint[]を保持する必要があります。次に、それぞれのint[]を比較します(これは、一度に32ビットの比較です)。

関連する問題