On Wednesday, 11 June 2014 at 13:25:03 UTC, John Colvin wrote:
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.
That's great, thank you very much for taking the time to answer.