Skip to content

Bloom filter written in C++ for strings. Tests whether an element belongs to a set. False positive matches are possible, false negatives are not. Also implements Rabin–Karp algorithm with Rabin fingerprint hashes for multiple substring searches.

License

Notifications You must be signed in to change notification settings

thegeek/bloom-filter-cpp

Repository files navigation

Build Status

BloomFilter.cpp

Bloom filter written in C++ for strings. Tests whether an element belongs to a set. False positive matches are possible, false negatives are not. Also implements Rabin–Karp algorithm with Rabin fingerprint hashes for multiple substring searches.

This is a port of a similar lib I prototyped in JS.

Installation

npm install bloom-filter-cpp

Usage

#include "BloomFilter.h"
#include <iostream>

using namespace std;

int main(int argc, char**argv) {
  BloomFilter b;
  b.add("Brian");
  b.add("Ronald");
  b.add("Bondy");

  // Prints true
  cout << (b.exists("Brian") ? "true" : "false") << endl;

  // Prints false
  cout << (b.exists("Brian Ronald") ? "true" : "false") << endl;

  // Create a new BloomerFilter form a previous serialization
  BloomFilter b2(b.getBuffer(), b.getByteBufferSize());

  // Prints the same as above
  cout << (b2.exists("Brian") ? "true" : "false") << endl;
  cout << (b2.exists("Brian Ronald") ? "true" : "false") << endl;

  // And you can check if any substring of a passed string exists
  // Prints true
  cout << (b.substringExists("Hello my name is Brian", 5) ? "true" : "false") << endl;
  // Prints false
  cout << (b.substringExists("Hello my name is Bri", 3) ? "true" : "false") << endl;

  return 0;
}

Build everything in release

make

Build everything in debug

make build-debug

Running sample

make sample

Running tests

make test

Clearing build files

make clean

About

Bloom filter written in C++ for strings. Tests whether an element belongs to a set. False positive matches are possible, false negatives are not. Also implements Rabin–Karp algorithm with Rabin fingerprint hashes for multiple substring searches.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published