Version 3.8.0

September 10, 2017

Release Notes

1. Fixed bug of incorrect buffer management on Windows/DLLs when bit-vectros are instantiated and used in different DLLs.

2. Changed buffer management for full blocks.

3. Improved doxygen markup and documentation.

4. Implemented new sparse container for integer types, based on bit-transposition. New container offers in-memory compression of non-random data based on bvector<>, dynamic adjustment of bitness, serialization and new algorithms.

Example


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

using namespace std;

int main(void)
{
    bm::sparse_vector > sv1;
    
    unsigned arr[3] = {1,2,3};
    sv1.import(arr, 3); // import from a C-style array (fastest way to populate)

    // optimize memory allocation of sparse vector
    {
        BM_DECLARE_TEMP_BLOCK(tb)
        sv1.optimize(tb);
    }
    
    cout << "sv1.size() = " << sv1.size() << endl;
    cout << "sv[]:";
    
    // print the vector elements using direct access operator
    for (unsigned i = 0; i < sv1.size(); ++i)
    {
        cout << sv1.at(i) << ",";
    }
    cout << endl;
    

    return 0;
}