Angenommen, ich habe eine sortierte Menge von Ganzzahlen, xs, und ich möchte alle Ganzzahlen in xs abfragen, die [x, y) sind, dh. zwischen x und y.Wie bekomme ich die Reihenfolge der Zahlen in einer sortierten Menge, die zwischen zwei ganzen Zahlen in clojure liegen?
ich tun kann:
(select #(and (>= % x) (< % y)) xs)
Aber das ist ineffizient - O (n), wenn es O (log n) sein könnte, erwarte ich, dass die Anzahl der Elemente klein sein zurückgegeben. Wenn ich take-while und drop-while benutze, würde ich mich beenden, sobald ich y erreicht habe, aber ich kann immer noch nicht effizient zu x springen.
ich clojure gerade lerne so hier ist, wie ich es in C++ tun würde:
set<int>::iterator first = xs.lower_bound(x);
set<int>::iterator last = xs.lower_bound(y);
for (; first != last; ++first)
// do something with *first
Kann ich das in Clojure?