2

現在、連想配列をいじっていますが、配列にオブジェクトを追加する方法がわかりません。挿入しようとしましたが、両方の引数を認識しません。

また、これを行うと、エラーが発生します。

Node[bool] test;

Node node;

Node[bool] temp = [ false:node ];

test ~= temp;


//Error 1   Error: cannot append type Node[bool] to type
//Node[bool]    C:\Users\CP\Documents\Visual Studio
//2010\Projects\D\STDS\NPC.d    256 

これは、連想配列に追加演算子を使用できないということですか?

4

2 に答える 2

7

単一の要素を追加するには、他のタイプの配列の場合と同じように割り当てます。

test[false] = node;

連想配列を別の連想配列に追加するには、それをループして要素を再割り当てします。

foreach(k, v; temp) test[k] = v;

理由: 連想配列はリストではありません。名前が示すように、連想配列です。追加演算子は、要素の連続したリストに対して意味があります。D の AA はハッシュ テーブルです。

于 2012-04-04T18:54:11.977 に答える
0

連想配列の配列お探しですか? その場合、例として次のようにします。

struct Node { int x; }
Node[bool][] test;
Node[bool] temp = [ false:Node(1), true:Node(2) ];
test ~= temp;
test ~= [ false:Node(3), true:Node(4) ];
writefln("Nodes: %s", test); // Nodes: [[false:Node(1), true:Node(2)], [false:Node(3), true:Node(4)]]

これにより、線形配列 ( test ) が得られます。その各要素は、最大 2 つの要素を持つ連想配列です (キーの型が bool であるため)。

ただし、代わりに二分木を作成しようとしていますか? 次に、左右のブランチの Node 構造体自体の内部に Node メンバー変数が必要になります (そうでない場合は無視してください)。

于 2012-04-05T17:25:13.773 に答える