【发布时间】:2014-04-23 20:11:52
【问题描述】:
我需要一个可以快速(log N)计算小于某个值/修改值的元素数量的结构。我知道使用 R-B 树或类似树很容易,但我想通过使用已经实现这些树的 STL 来节省时间。但是,我找不到任何可以满足我需要的功能 - 是否有可能,可能使用某种技巧?我知道它需要存储每个子树中的元素数量,这可能不会正常进行。
【问题讨论】:
-
有Boost Intrusive,但据我所知,STL没有什么好办法。
-
你也需要快速插入和删除吗?
-
如果你限制自己使用 G++,它有一个order-statistic tree implementation。那当然是如果你需要在线插入和删除,否则你可以使用排序数组。如果你有一个紧凑的宇宙或者你可以使用预处理来压缩它,你也可以使用binary-indexed tree
-
是的,我也需要插入/删除。我想我会坚持自己编写 R-B 代码,因为我不能使用非标准库。
-
顺便说一句,Treap 更快、更容易编写代码