2012-04-04 7 views
2

私は連想配列で遊んでいますが、私は は配列に追加のオブジェクトを追加する方法を理解できません。 I は挿入を試みましたが、両方の引数を認識しません。私はこれを行う場合連想配列に挿入しますか?

はまた、それがエラーを生成します。

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 

これはあなたが連想 配列に追記演算子を使用することはできませんということですか?

+0

ブールキーを使用すると、多くのオプションがありません。:) – DejanLekic

答えて

6

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

test[false] = node; 

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

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

理由:連想配列はリストではありません。名前が示唆するように、それらはよく、連想配列です。追加演算子は、要素の連続したリストに意味を持ちます。 DのAAsはハッシュテーブルです。

+0

私がしたいのは、1つの要素を追加することだけです。どうすればいい? – RedShft

+3

次に、割り当てop:assoc_array [key] = valueを使用します。 – q66

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)]] 

することは、あなたにリニアアレイ(テスト)を与えることになる、の各要素は、あなた以来の二つの要素(の最大の連想配列です。キータイプはboolです)。

しかし、代わりにバイナリツリーを作成しようとしていますか?次に、Node内のNodeメンバ変数を、左と右の枝のためにNode構造体自身の中に入れたいと思います(そうでない場合は無視してください)。