#include <stdlib.h>
#include <iostream>
#include "bm.h"
#include "bmundef.h"
using namespace std;
const unsigned MAX_VALUE = 1000000;
static
void fill_bvector(bm::bvector<>* bv1, bm::bvector<>* bv2)
{
for (unsigned i = 0; i < MAX_VALUE; ++i)
{
if (rand() % 2500)
{
bv1->set_bit(i);
bv2->set_bit(i);
}
}
}
static
void print_statistics(const bm::bvector<>& bv)
{
bm::bvector<>::statistics st;
bv.calc_stat(&st);
cout << "Bits count:" << bv.count() << endl;
cout << "Bit blocks:" << st.bit_blocks << endl;
cout << "GAP blocks:" << st.gap_blocks << endl;
cout << "Memory used:"<< st.memory_used << endl;
cout << "Max.serialize mem.:" << st.max_serialize_mem << endl << endl;;
}
int main(void)
{
try
{
bm::bvector<> bv1;
bm::bvector<> bv2;
bv2.set_new_blocks_strat(bm::BM_GAP);
fill_bvector(&bv1, &bv2);
print_statistics(bv1);
print_statistics(bv2);
bv1.optimize();
print_statistics(bv1);
}
catch(std::exception& ex)
{
std::cerr << ex.what() << std::endl;
}
return 0;
}