Dnia 20-10-2010 o 08:26:12 clueless <[email protected]> napisał(a):

Hi. I want to have a sorted result of map-function, that is (in pseudocode):

sorted(map!(fun)(arr))

How can I do that? I have tried something like:

auto s = map!(fun)(arr);
//sort(s);
//sort(s[]);
//sort(s.dup);
writeln(s);

but without success.

Map is a range of computed values, so you can't assign elements to it. Use an external index:

auto m = map!"a*a"([9,1,3,2]);
auto idx = new uint[](m.length);
makeIndex(m, idx);
foreach(i; idx)
    writeln(m[i]);

Prints:

1
4
9
81

One problem: makeIndex() doesn't return a SortedRange. Yet.
http://d.puremagic.com/issues/show_bug.cgi?id=5106
But you can still make a SortedRange of your own that accounts for dereferencing (see bug description).

--
Tomek

Reply via email to