![]() |
Boost : |
From: Joaquin M López Muñoz (joaquinlopezmunoz_at_[hidden])
Date: 2025-04-09 16:51:00
Hi,
I've been working during the last few months in a library I would like
to propose for
Boost:
Repo: https://github.com/joaquintides/bloom
Docs: https://master.bloom.cpp.al/
(Candidate) Boost.Bloom provides the class template boost::bloom::filter
that can be
configured to implement a classical Bloom filter as well as variations
discussed in the
literature such as block filters, multiblock filters, and more.
   #include <boost/bloom/filter.hpp>
   #include <cassert>
   #include <string>
   int main()
   {
     // Bloom filter of strings with 5 bits set per insertion
     using filter = boost::bloom::filter<std::string, 5>;
     // create filter with a capacity of 1'000'000 **bits**
     filter f(1'000'000);
     // insert elements (they can't be erased, Bloom filters are
insert-only)
     f.insert("hello");
     f.insert("Boost");
     //...
     // elements inserted are always correctly checked as such
     assert(f.may_contain("hello") == true);
     // elements not inserted may incorrectly be identified as such with a
     // false positive rate (FPR) which is a function of the array
capacity,
     // the number of bits set per element and generally how the
boost::bloom::filter
     // was specified
     if(f.may_contain("bye")) { // likely false
       //...
     }
   }
If you deem the library interesting and think it stands a chance of
being accepted
into Boost, allow me to request your endorsement.
Best,
Joaquin M Lopez Munoz
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk