我正在玩关联数组,我不能 似乎弄清楚如何向数组添加其他对象。一世 尝试插入,但它不识别两个参数。
另外,如果我这样做会产生错误:
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 :(得分: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成员变量用于左右分支(如果不是这样的话请忽略)。