digitalmars.D.learn - EMSI Containers and HashMap of HashMaps
- Tobias Pankrath (24/24) May 02 2021 The following code segfaults, when the outer hashmap rehashes,
- Imperatorn (5/30) May 02 2021 ```d
- Tobias Pankrath (3/8) May 02 2021 Is HashMap.init a broken state? That makes using them hard as
- Tobias Pankrath (3/7) May 02 2021 That only fixes it, because you are avoiding the rehash with the
- Tobias Pankrath (4/8) May 05 2021 I've figured it out and filed an PR
The following code segfaults, when the outer hashmap rehashes,
and I am not yet sure why.
```d
module tests.refcounted_hashmap_test;
import containers;
import std.typecons;
struct Map
{
HashMap!(int, int) theMap;
}
unittest
{
HashMap!(int, RefCounted!Map) mapOfMaps;
foreach (i; 0 .. 1000)
{
RefCounted!Map val;
if (i == 0) val.theMap.getOrAdd(i, i);
mapOfMaps.getOrAdd(i, val);
}
}
```
For your convenience: https://run.dlang.io/is/gHSlu1
I am using Refcounted() because HashMap itself is not copy-able.
Is there another way to have HashMaps as values of HashMaps?
May 02 2021
On Sunday, 2 May 2021 at 07:38:03 UTC, Tobias Pankrath wrote:
The following code segfaults, when the outer hashmap rehashes,
and I am not yet sure why.
```d
module tests.refcounted_hashmap_test;
import containers;
import std.typecons;
struct Map
{
HashMap!(int, int) theMap;
}
unittest
{
HashMap!(int, RefCounted!Map) mapOfMaps;
foreach (i; 0 .. 1000)
{
RefCounted!Map val;
if (i == 0) val.theMap.getOrAdd(i, i);
mapOfMaps.getOrAdd(i, val);
}
}
```
For your convenience: https://run.dlang.io/is/gHSlu1
I am using Refcounted() because HashMap itself is not
copy-able. Is there another way to have HashMaps as values of
HashMaps?
```d
HashMap!(int, RefCounted!Map) mapOfMaps = HashMap!(int,
RefCounted!Map)(1024);
```
May 02 2021
On Sunday, 2 May 2021 at 08:59:15 UTC, Imperatorn wrote:On Sunday, 2 May 2021 at 07:38:03 UTC, Tobias Pankrath wrote:```d HashMap!(int, RefCounted!Map) mapOfMaps = HashMap!(int, RefCounted!Map)(1024); ```Is HashMap.init a broken state? That makes using them hard as struct members :/
May 02 2021
On Sunday, 2 May 2021 at 08:59:15 UTC, Imperatorn wrote:```d HashMap!(int, RefCounted!Map) mapOfMaps = HashMap!(int, RefCounted!Map)(1024); ```That only fixes it, because you are avoiding the rehash with the initial size.
May 02 2021
On Sunday, 2 May 2021 at 07:38:03 UTC, Tobias Pankrath wrote:For your convenience: https://run.dlang.io/is/gHSlu1 I am using Refcounted() because HashMap itself is not copy-able. Is there another way to have HashMaps as values of HashMaps?I've figured it out and filed an PR https://github.com/dlang-community/containers/pull/169. Would be great if we can get a new version out with this.
May 05 2021









Tobias Pankrath <tobias+dlang pankrath.net> 