On Tuesday, 12 November 2024 at 00:42:41 UTC, Ralph wrote:
Hi there,

I know it is possible to declare an associative array which takes arrays as values, i.e.
**int[][int] arr;**
A sample of this could be
**arr[2] = [2, 3, 2, 4, 5];**

I was wondering if there was a way to have this with sets instead of arrays. In D, sets are equivalent to red-black trees, afaik. Almost as expected, the declaration
**redBlackTree[int] arr;**
such that (according to the initial example) **arr[2]** would be [2, 3, 4, 5]
does not work.

Would anybody know of a workaround?

D's std container situation is quite bad. redBlackTree is one workaround about sets for sure. Another way to simulate it - is using another AA with bool/void parameters.
```d
bool[int][int] dict_of_sets;
dict_of_sets[1] = [1:true, 2:true, 3:true];
dict_of_sets[1][4] = true;
writeln(dict_of_sets); // [1:[4:true, 3:true, 2:true, 1:true]]
```

Reply via email to