2010-06-03 12 views
6

Sıralı bir tamsayı kümem var mı, xs ve x lerdeki tüm tam sayıları [x, y], yani almak istiyorum. x ve y arasında.Sayı dizisini nasıl clojure içinde iki tamsayı arasında sıralanmış bir kümede alabilirim?

Yapabileceğim:

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

Ama bu verimsizdir - bu O (n günlük) olabilecekken O (n), ben öğelerin sayısı küçük olması döndü bekliyoruz. Take-while ve drop-while kullanımı y'ye ulaştığımda çıkmama izin verecek, ama yine de x'e verimli bir şekilde atlayamıyorum.

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

ben Clojure bunu Can:

Ben sadece çok burada Clojure öğreniyorum ben C++ yapacağını nasıl?

cevap

8

Oops! subseq işlevini özledim, belgelerin veri yapıları sayfasından bağlantı yok.

İlgili konular