小于X的元素数

时间:2014-04-23 20:11:53

标签: c++ algorithm stl

我需要一种能够快速(log N)计算小于某个值/修改值的元素数量的结构。我知道使用R-B树或类似的树很容易,但我想通过使用STL来节省时间,STL已经实现了这些树。但是,我找不到任何可以做我需要的功能 - 它是否可能,可能使用某种技巧?我知道它需要在每个子树中存储元素的数量,这可能不会正常。

1 个答案:

答案 0 :(得分:3)

您可以使用简单的排序向量或数组执行此操作:

std::vector<int> V;
// (fill V with values)
std::sort(V.begin(), V.end());

int numValsLessThan5 = std::lower_bound(V.begin(), V.end(), 5) - V.begin();
int numValsLessThanOrEqualTo5 = std::upper_bound(V.begin(), V.end(), 5) - V.begin();

upper/lower_bound在支持随机访问的容器上使用时具有对数复杂度。