插入关联数组?

时间:2012-04-04 18:50:40

标签: d

我正在玩关联数组,我不能 似乎弄清楚如何向数组添加其他对象。一世 尝试插入,但它不识别两个参数。

另外,如果我这样做会产生错误:

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 

这是否意味着您不能在关联上使用追加运算符 数组?

2 个答案:

答案 0 :(得分:7)

要添加单个元素,只需像对任何其他类型的数组一样分配它。

test[false] = node;

将一个assoc数组附加到另​​一个assoc数组,循环遍历它,然后重新分配元素。

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

原因:关联数组不是列表;顾名思义,它们就是关联数组。追加运算符对连续的元素列表有意义。 D'AAs是哈希表。

答案 1 :(得分: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 ),其中每个元素都是一个最多包含两个元素的关联数组(因为您的键类型是bool)。

但是,您是否尝试创建二叉树?那么你想要Node结构中的Node成员变量用于左右分支(如果不是这样的话请忽略)。