假设我有一个整数的排序集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中这样做吗?