如何获取clojure中两个整数之间的排序集中的数字序列?

时间:2010-06-03 04:42:45

标签: clojure

假设我有一个整数的排序集xs,我想检索xs中所有[x,y)的整数,即。在x和y之间。

我能做到:

(select #(and (>= % x) (< % y)) xs)

但这是低效的 - O(n)当它可能是O(log n)时,我希望返回的元素数量很少。使用take-while和drop-while会让我在到达y后退出,但我仍然无法有效地跳转到x。

我正在学习clojure所以这就是我将如何在C ++中实现它:

set<int>::iterator first = xs.lower_bound(x);
set<int>::iterator last = xs.lower_bound(y);
for (; first != last; ++first)
    // do something with *first

我可以在clojure中这样做吗?

1 个答案:

答案 0 :(得分:8)

糟糕!我错过了subseq函数,文档的数据结构页面没有链接。

(subseq xs >= x < y)