#include <iostream>
#include <string>
#include <vector>
#include <cassert>
using namespace std;
{
try
{
{
iit = "240-423-0567";
iit = "420-123-5078";
iit = "301-223-1234";
iit = "131-423-1235";
iit.add_null();
iit = "301-113-6535";
iit.flush();
}
{
auto it = str_sv.
begin();
auto it_end = str_sv.
end();
for (; it != it_end; ++it)
{
if (it.is_null())
cout << "NULL";
else
cout << *it;
cout << endl;
}
}
{
assert(bv_not_null);
{
cout << "List of NULL values: ";
for (; en.valid(); ++en)
{
cout << *en << ", ";
}
cout << endl;
}
}
{
cout << endl << "--------------------------\n";
auto it1 = str_sv.
begin();
auto it2 = str_sv.
begin();
auto it3 = str_sv.
begin();
auto it_end = str_sv.
end();
for (; it1 != it_end; ++it1, ++it2, ++it3)
{
if (it1.is_null())
cout << "NULL";
else
cout << "(" << *it1 << ")" << *it2 << "." << *it3;
cout << endl;
}
}
assert(!b);
str_sv1.
set(2,
"788-125-6789");
if (b)
{
cout << endl;
cout << "Mismatch at: " << idx << endl;
cout << "value=" << str_sv1[idx] << endl;
}
cout << endl;
{
{
for (;en.valid(); ++en)
{
idx = *en;
cout << idx << ": " << str_sv1[idx] << endl;
}
}
cout << "Prefix search:" << endl;
cout <<
"Found: " << bv_res.
count() << endl;
for (;en.valid(); ++en)
{
idx = *en;
cout << idx << ": " << str_sv1[idx] << endl;
}
}
}
catch(std::exception& ex)
{
std::cerr << ex.what() << std::endl;
return 1;
}
return 0;
}
Compressed bit-vector bvector<> container, set algebraic methods, traversal iterators.
#define BM_DECLARE_TEMP_BLOCK(x)
Algorithms for bm::sparse_vector.
string sparse vector based on bit-transposed matrix
pre-processor un-defines to avoid global space pollution (internal)
const bvector_type * get_null_bvector() const BMNOEXCEPT
Get bit-vector of assigned values or NULL (if not constructed that way)
Bitvector Bit-vector container with runtime compression of bits.
bvector< Alloc > & invert()
Invert/NEG all bits It should be noted, invert is affected by size() if size is set - it only inverts...
size_type count() const BMNOEXCEPT
population count (count of ON bits)
void resize(size_type new_size)
Change size of the bvector.
bool any() const BMNOEXCEPT
Returns true if any bits in this bitset are set, and otherwise returns false.
enumerator get_enumerator(size_type pos) const
Returns enumerator pointing on specified or the next available bit.
algorithms for sparse_vector scan/search
bool find_eq_str_prefix(const SV &sv, const value_type *str, bvector_type &bv_out)
find sparse vector elements with a given prefix (string)
bool find_eq_str(const SV &sv, const value_type *str, bvector_type &bv_out)
find sparse vector elements (string)
void add_null()
add NULL (no-value) to the container
void set_substr(unsigned from, unsigned len=0) BMNOEXCEPT
setup iterator to retrieve a sub-string of a string
succinct sparse vector for strings with compression using bit-slicing ( transposition) method
const_iterator end() const BMNOEXCEPT
Provide const iterator access to the end
void optimize(bm::word_t *temp_block=0, typename bvector_type::optmode opt_mode=bvector_type::opt_compress, typename str_sparse_vector< CharType, BV, STR_SIZE >::statistics *stat=0)
run memory optimization for all vector planes
size_type size() const
return size of the vector
const_iterator begin() const BMNOEXCEPT
Provide const iterator access to container content
back_insert_iterator get_back_inserter()
Provide back insert iterator Back insert iterator implements buffered insertion, which is faster,...
void set(size_type idx, const value_type *str)
set specified element with bounds checking and automatic resize
bvector_type::size_type size_type
@ use_null
support "non-assigned" or "NULL" logic
bool sparse_vector_find_first_mismatch(const SV &sv1, const SV &sv2, typename SV::size_type &midx, bm::null_support null_proc=bm::use_null)
Find first mismatch (element which is different) between two sparse vectors (uses linear scan in bit-...
bm::str_sparse_vector< char, bvector_type, 32 > str_sv_type