From a2625dad3e0b32cd0a8ceee350aef39e8412e5b0 Mon Sep 17 00:00:00 2001 From: nvalimak Date: Tue, 10 Mar 2009 19:11:41 +0000 Subject: [PATCH] Added rankLessThan git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@240 3cdefd35-fc62-479d-8e8d-bae585ffb9ca --- libcds/src/static_sequence/static_sequence_wvtree.cpp | 9 +++++++++ libcds/src/static_sequence/static_sequence_wvtree.h | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/libcds/src/static_sequence/static_sequence_wvtree.cpp b/libcds/src/static_sequence/static_sequence_wvtree.cpp index e86da89..baabf02 100644 --- a/libcds/src/static_sequence/static_sequence_wvtree.cpp +++ b/libcds/src/static_sequence/static_sequence_wvtree.cpp @@ -58,6 +58,15 @@ uint static_sequence_wvtree::rank(uint symbol, uint pos) { return root->rank(am->map(symbol), pos, 0, c); } +uint static_sequence_wvtree::rankLessThan(uint &symbol, uint pos) { + uint s = am->map(symbol); + std::cout << "lessthan..." << std::endl; + uint r = root->rankLessThan(s, pos, 0, c); + symbol = am->unmap(s); + return r; +} + + uint static_sequence_wvtree::count(uint s) { return root->rank(am->map(s), len-1, 0, c); } diff --git a/libcds/src/static_sequence/static_sequence_wvtree.h b/libcds/src/static_sequence/static_sequence_wvtree.h index c67d0f8..dd1259e 100644 --- a/libcds/src/static_sequence/static_sequence_wvtree.h +++ b/libcds/src/static_sequence/static_sequence_wvtree.h @@ -51,10 +51,15 @@ class static_sequence_wvtree : public static_sequence { 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); + } virtual uint count(uint s); -- 2.17.1