8

概要: 私の数学プログラムには、反復する項目の巨大なコレクションがあります。これは主に、キーと値のペアに似た、アイテムと他のアイテムへのポインター((int)item、(int) ポインター) で構成されます。ただし、各アイテムには、次のような他のいくつかの属性があります。

(アイテム, ポインタ),(属性, 属性, 属性, ...)

アイテム、ポインター、および属性が頻繁に追加されます。

このサイトや他のサイトを検索すると、プログラムにどのコレクションを使用するかについて、ますますわからなくなりました。

現時点では、vcskicks.com にあるDictionaryソリューションが最適なようです。

Dictionary<Dictionary<int,int>,Dictionary<int,int> nestedDictionary = 
    new Dictionary<Dictionary<int,int>,Dictionary<int,int> nestedDictionary();

または平易な言葉で:

Dictionary<Dictionary<item, pointer>, 
           Dictionary<attribute,attribute, ...> nestedDictionary =      
    Dictionary<Dictionary<item, pointer>, 
               Dictionary<attribute,attribute, ...>();

属性の数は事前定義されておらず、長さが異なることに注意してください。また、現時点では、パフォーマンスのオーバーヘッドのため、オブジェクトを使用することに消極的です。

重複するアイテムが存在するため、ハッシュセットは適合しないようですが、属性は異なりますまたは、ハッシュセットに重複するアイテムがあっても、ハッシュキーが重複していない可能性はありますか? 若干の混乱があるようです。

一部によると、次のハッシュセットは計算されません。

11011, 0001
11011, 0011

他の人によると、それは異なるハッシュキーを持つためです。それは私を困惑させます。

私の質問:

あいまいになるリスクがあります: 使用するのに最適なコレクションの種類は何ですか? 必要に応じてストーリーに追加していきます。

編集

巨大な手段: 潜在的に数百万のアイテム。すべてのアイテムにはポインタと属性があります。 一般的な使用法は、特定のアイテムを検索し、ポインターを取得し、ポインターがなくなるまで次のポインターのアイテムを取得することです。同時に、各アイテムのすべての属性が収集されます。追加は定期的に行われ、たまに削除されます。 ポインター: ポインターは、参照するアイテムのインデックスです。2 つのアイテムがあり、最初のアイテムが 2 番目のアイテムにリンクされている場合、最初のアイテムは 2 番目のアイテムのインデックスをポインターとして持ちます。 最高は、メモリ使用量と速度で定義されます。最後に、見つかったすべてのアイテムが互いに比較されます。 例:

[Item , pointer] [attribute, attribute, ...]
[11011,    1001] [ 1101,        1111 ]
[10001,    1000] [ 1110,        0101 ]
[11111,    0010] [ 1111,        1110 ]
[11011,    0001] [ 0010,        1010 ]

ありがとう

4

1 に答える 1