Boost logo

Boost :

Subject: Re: [boost] boost::compressed_bitset
From: Joachim Faulhaber (afojgo_at_[hidden])
Date: 2009-06-24 08:07:19


Hi Zach,

2009/6/11 Zachary Turner <divisortheory_at_[hidden]>
>
> I know there's over a zillion bitset implementations, but often times I have
> found myself in need of a bitset that is efficient (space-wise) at storing
> millions, billions, or even trillions (no joke) of bits.  For this I have
> developed an in-house class which stores bits in a structure vaguely
> reminiscent of a "T-Tree" (http://en.wikipedia.org/wiki/T_tree).  You can
> think of it basically as an std::map<boost::uint64_t, boost::uint64_t> where
> <key, value> represents the *interval* of bits [key, key+value-1].  So it's
> basically run-length encoded, with logarithmic lookups instead of linear
> lookups.

I have developed a very similar class coming form a different background.
Working on problems of date and time, I came up with a collection of
interval set and map class templates, that I have called Interval Template
Library (ITL).
http://www.herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/

It is interesting to see that the same useful data types occur and reoccur
from different problem domains. Fortunately boost is a good place to
collect, discuss and develop those useful data types.

The compressed_bitset that you are presenting seems to be similar
to the ITL's interval_set<T>. As with your class the idea is to represent
large sets in a compact way using intervals that are efficiently organized
using a balanced tree.

May be, a look at my library can be helpful for your project.

enjoy
Joachim

---
The current sources of the ITL are in the boost sandbox:
https://svn.boost.org/svn/boost/sandbox/itl/
The latest release (3.0.0) is in the boost vault:
http://sourceforge.net/projects/itl (section containers).
Release 2.0.1 is available form sourceforge:
http://sourceforge.net/projects/itl
Online documentaiton at:
http://www.herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk