1 #ifndef DISTINCTELEMENTS_H
2 #define DISTINCTELEMENTS_H
7 #include "../hashing/hashfunction.h"
22 sizeOfUniverse(sizeOfUniverse),
24 rank(ceil(96/(eps*eps))),
51 H hashval = (*hashfunction)(element);
52 if(elements.count(hashval) == 0)
54 if(elements.size() < rank)
55 elements.insert(hashval);
56 else if(*(--elements.cend()) > hashval)
58 elements.erase(--elements.end());
59 elements.insert(hashval);
67 if(elements.size() == 0)
70 return (sizeOfUniverse3 * rank) / *(--elements.cend());
Base class template for any hash function mapping an element from universe U to hashing space H...
unsigned long long numberOfDistinctElements()
DistinctElements(unsigned long long sizeOfUniverse, double eps, std::function< HashFunction< U, H > *(unsigned long long sizeOfHashingSpace)> hashfunctionCreator)
HashFunction< U, H > * hashfunction
Count distinct elements in a data stream.
unsigned long long sizeOfUniverse3
DistinctElements< U, H > & operator<<(U const &element)
unsigned long long sizeOfUniverse