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;

要将 assoc 数组附加到另​​一个 assoc 数组,请对其进行循环并重新分配元素。

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

为什么:关联数组不是列表;顾名思义,它们是关联数组。append 运算符对于连续的元素列表是有意义的。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),它的每个元素都是一个关联数组,最多有两个元素(因为你的键类型是 bool)。

但是,您是否尝试创建二叉树?然后,您需要 Node 结构本身内的 Node 成员变量用于左右分支(如果不是这种情况,请忽略)。

于 2012-04-05T17:25:13.773 回答