float[float] aa = [2.2:7.7, 3.3:6.6, 1.1:4.4];
std.sort(aa);
assert(aa == [1.1:4.4, 2.2:7.7, 3.3:6.6]);
上記は機能しません。 1つはaa
をどのように並べ替えますか?連想配列をソートするには?
float[float] aa = [2.2:7.7, 3.3:6.6, 1.1:4.4];
std.sort(aa);
assert(aa == [1.1:4.4, 2.2:7.7, 3.3:6.6]);
上記は機能しません。 1つはaa
をどのように並べ替えますか?連想配列をソートするには?
Dの組み込み連想配列はhash tablesです。彼らはソートされていないので、ソートすることは意味がありません。ソートがAAを反復するときにソートが意味をなさせる唯一の時間は、それらを新しいコンテナに入れることを必要とします。だから、あなたは何かをすることができる
auto keys = aa.keys;
sort(keys);
しかし、あなたはAA自体をソートすることはできません。ソートされたマップが必要な場合は、std.container.RedBlackTree
のようなものを使用する必要があります。セットではなくマップとして機能させるには少し時間がかかります(ソート関数はキーのみでソートする必要があります。いくつかの関数に関数を渡すには、ダミー値のタプルが必要です)。
これは、JavaがHashMap
とSortedMap
であり、なぜC++がunordered_map
(C++ 11)で、map
であるのかという理由からです。どちらも地図であり、ソートやルックアップの時間に関しては特に特性が非常に異なっています。
これは意味がありません。
連想配列は、「辞書」または「マップ」とも呼ばれます。 Dの特定のバリエーションはハッシュテーブルです。それらはではなく、アレイです。それらを並べ替えると、は、の休憩時間を得ることができます。
高速検索時間が必要な場合は、代わりにRedBlackTree
を使用することを検討してください。
指定された順序でrsultsが必要か、または2つの異なるAAインスタンスが同等であることを確認するだけですか? – BCS
@ 'std :: map'と同じように、結果はある順序で必要です。おそらく、 'std.container'を使って終わるでしょう。 – Arlen