X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=libcds%2Fsrc%2Fstatic_sequence%2Fstatic_sequence_wvtree.h;h=6a112fba2022796a4c1e0078c3dc03b38781dc65;hb=f32808a35be7a1e62830a5972473178014fa44e5;hp=f97264802fe25edc825940281df03900948f24df;hpb=450ba3c9c74665094fb8f6821d6cc92d2bf23011;p=SXSI%2FXMLTree.git diff --git a/libcds/src/static_sequence/static_sequence_wvtree.h b/libcds/src/static_sequence/static_sequence_wvtree.h index f972648..6a112fb 100644 --- a/libcds/src/static_sequence/static_sequence_wvtree.h +++ b/libcds/src/static_sequence/static_sequence_wvtree.h @@ -32,7 +32,7 @@ #include #include -using namespace std; +//using namespace std; /** Wavelet tree implementation using pointers. * @@ -46,14 +46,27 @@ class static_sequence_wvtree : public static_sequence { * equals n */ static_sequence_wvtree(uint * symbols, uint n, wt_coder * coder, static_bitsequence_builder * bmb, alphabet_mapper * am); + static_sequence_wvtree(uchar * symbols, uint n, wt_coder * coder, static_bitsequence_builder * bmb, alphabet_mapper * am); + virtual ~static_sequence_wvtree(); virtual uint rank(uint symbol, uint pos); + virtual uint rankLessThan(uint &symbol, uint pos); virtual uint select(uint symbol, uint i); virtual uint access(uint pos); + virtual uint access(uint pos, uint &rank) + { + return root->access(pos, rank); + } + // Returns all elements from interval [i, j] such that + // their value is in [min, max]. + virtual vector access(uint i, uint j, uint min, uint max); + virtual vector accessAll(uint i, uint j); + virtual uint count(uint i, uint j, uint min, uint max); + virtual uint count(uint s); virtual uint size();