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