Boost logo

Boost :

Subject: [boost] Is someone interested in container CompressedVector, a vector-like storage for integer types
From: Alexander Bulovyatov (bulovyatov_at_[hidden])
Date: 2011-09-29 18:03:34


Hi!

Assume you want an interface as for vector<unsigned int>, but know that
elements have only N significant bits, say 17. In this case the
container will save 46% memory compared to vector<unsigned int>.

CompressedVector internally stores elements as a dynamic bitset
(vector<size_t>) and uses bitshift ops to put/get significant bits
into one or two size_t elements. It's similar to vector<bool> and
dynamic_bitset, and has the same drawback, it's not a proper STL
container.

Anyway, the container is simple, efficient and quite fast.
It will work best for very long arrays of indexes. Since its storage
is continuous, it can also be used to speed up IO (load/store to
disk, network transfers) acting as a very fast compression.


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