Memory Efficient HashSet
Edwin van Leeuwen via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Mar 8 05:07:00 PST 2016
On Tuesday, 8 March 2016 at 08:12:04 UTC, Nordlöw wrote:
> Has anybody put together a memory-efficient D-implementation of
> a HashSet
>
> Something like
>
> sparse_hash_set<> contained in
>
> https://github.com/sparsehash/sparsehash
>
> but in D.
There is an implementation in:
code.dlang.org/packages/emsi_containers
But to be honest I got stuck trying to use it (copy constructor
disabled), so I used this very minimal wrapper around associative
array:
private struct HashSet(E) {
// TODO switch to proper implementation (not using AA)
bool put( E el )
{
if ( el in set )
return false;
set[el] = set.length;
return true;
}
size_t[E] set;
}
(I only needed put, since I used it to check whether we already
encountered a value before in a lazy/non sorted implementation of
uniq)
More information about the Digitalmars-d-learn
mailing list