.sort vs sort(): std.algorithm not up to the task?

Stanislav Blinov via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 7 19:31:43 PDT 2017


On Thursday, 8 June 2017 at 02:25:17 UTC, Jonathan M Davis wrote:

Oh I see, the was error related to iteration, not sorting.

> Ranges do not support iterating with an index. The workaround 
> if you want to have an index with ranges and foreach, then you 
> should use lockstep:
>
> http://dlang.org/phobos/std_range.html#lockstep
>
> e.g.
>
> foreach(i, v; lockstep(iota!size_t(0), s))
> {}
>
> or
>
> foreach(i, v; lockstep(iota(0), s))
> {}

There's an enumerate(): 
https://dlang.org/phobos/std_range.html#enumerate

import std.algorithm : sort;
import std.range : enumerate;

foreach(i, k; aa.keys.sort().enumerate) {
     /* ... */
}


More information about the Digitalmars-d-learn mailing list