Boost logo

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