Getting the underlying range from std.range.indexed, with elements in swapped order, when Indexed.source.length == Indexed.indices.length
Alex
sascha.orlov at gmail.com
Wed Jun 27 14:50:25 UTC 2018
On Wednesday, 27 June 2018 at 14:29:33 UTC, Uknown wrote:
> On Wednesday, 27 June 2018 at 14:21:39 UTC, Alex wrote:
>> On Wednesday, 27 June 2018 at 13:27:46 UTC, Uknown wrote:
>>> Title says it all. Is there a trivial way to do this?
>>
>> There are
>> https://dlang.org/library/std/algorithm/mutation/reverse.html
>> and
>> https://dlang.org/library/std/range/retro.html
>>
>> both require a bidirectional range, which Indexed, luckily is.
>
> I wasn't clear enough. I meant getting back the underlying
> `Source` range with _its_ elements in the order that the
> indices specify. This wouldn't be possible in the generic case,
> but the special case when indices.length == source.length, it
> should be possible. So indexed(myRange, [2, 3, 5, 1,
> 4]).sourceWithSwappedElements should return a typeof(myRange)
> with the elements swapped in that order.
I see. Ok, one possibility is
source = indexed(source, indices).array;
but I assume you want something without extra allocation, right?
More information about the Digitalmars-d-learn
mailing list