Skip to content

SergeyZhukovsky/bloom-filter-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Nov 30, 2015
0d8b443 · Nov 30, 2015

History

32 Commits
Oct 25, 2015
Nov 20, 2015
Oct 24, 2015
Oct 26, 2015
Oct 30, 2015
Oct 30, 2015
Oct 19, 2015
Oct 26, 2015
Nov 30, 2015
Oct 30, 2015
Oct 26, 2015
Nov 30, 2015
Oct 26, 2015
Nov 30, 2015
Nov 30, 2015

Repository files navigation

Build Status

BloomFilter.cpp

Bloom filter written in C++. 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

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 64.7%
  • Python 31.8%
  • Makefile 2.1%
  • C 1.2%
  • JavaScript 0.2%