On Wednesday, 11 June 2014 at 13:20:37 UTC, Andrew Brown wrote:
You are correct. assumeSorted and lowerBound will provide
better time complexity than countUntil
I'm sorry, one final question because I think I'm close to
understanding. Map produces a forward range (lazily) but not a
random access range? Therefore, lowerBound will move along this
range until the pred is not true? This means it would be better
to do:
numbers.indexed(order).assumeSorted.lowerBound
than:
map(a => numbers[a])(order).assumeSorted.lowerBound
as the lowerBound will be faster on a random access range as
produced by indexed?
map preserves the random access capabilities of it's source. An
array is random access, therefore map applied to an array is also
random access.
There isn't any practical difference between indices.map!((i) =>
src[i])() and src.indexed(indices) that I know of.