sort struct of arrays

anonymous via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri May 9 07:48:49 PDT 2014


On Friday, 9 May 2014 at 14:23:41 UTC, Luís Marques wrote:
> If you have an array of structs, such as...
>
>      struct Foo
>      {
>          int x;
>          int y;
>      }
>
>      Foo[] foos;
>
> ...and you wanted to sort the foos then you'd do something 
> like...
>
>      foos.sort!(a.x < b.x),
>
> ..and, of course, both of the fields x and y get sorted 
> together.
> If you have a so-called struct of arrays, or an equivalent
> situation, such as...
>
>      int[] fooX;
>      int[] fooY;
>
> ...is there a simple way to sort fooX and fooY
> "together"/coherently (keyed on, say, fooX), using the standard
> lib?

std.range.zip(fooX, fooY).sort!((a, b) => a[0] < b[0]);

I wasn't sure if that's supposed to work. Turns out the
documentation on zip [1] has this exact use case as an example.

[1] http://dlang.org/phobos/std_range.html#zip


More information about the Digitalmars-d-learn mailing list