C++设置: counting elements less than a value

标签 c++ performance algorithm stl complexity-theory

假设我有一个 STL set <int> sint x , 如何计算 s 中的元素个数小于 x ?

我正在寻找 O(log n) (或类似的;任何比 O(n) 更好的东西)解决方案;

我已经知道 std::distance(s.begin(), s.lower_bound(x)) , 但那是 O(n) ,我相信,因为set s 不是随机访问。

最佳答案

您需要的是“订单统计树”。它本质上是一个增强的(二分搜索)树,支持附加操作 rank(x),它为您提供具有小于或等于元素 x 的键的元素数量。第 14 章,Cormen、Leiserson、Rivest、Stein; “算法简介”应该为您提供算法背景。

web 上也有一些实现.

关于C++设置: counting elements less than a value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15321013/

相关文章:

c++ - 确定用于在 *ix 操作系统上构建共享对象的编译器和版本

c++ - 无法读取二进制编码的十六进制值

c++ - 改进欧拉项目 #25 的强力解决方案

algorithm - 保持拓扑排序树非循环生长的最有效方法是什么?

c++ - 为什么快速排序会引发异常 “write access violation”

python - 使用分而治之的方法找到列表中出现次数至少为 60% 的元素?

c++ - Qt - 检测 QWindow 何时关闭

c++ - 在 C 中开始图形界面编程的最佳方法是什么?

Android如何在fragments中高效实现数据缓存和配置变化事件?

javascript - 在它变得粗鲁之前有多少内存?