On Monday, 17 June 2013 at 23:34:46 UTC, Colin Grogan wrote:
auto orig = [1,2,3,4,5,6,7];
auto sliceEven = orig[0..$..2];
auto sliceOdd = orig[1..$..2];
But I dont think thats possible?
Not with arrays, they must be contiguous. But you can use ranges
instead:
-----
import std.stdio;
import std.range;
void main()
{
auto orig = [1,2,3,4,5,6,7];
auto sliceEven = orig.stride(2);
auto sliceOdd = orig.drop(1).stride(2);
writeln(sliceEven);
writeln(sliceOdd);
}
-----
You can convert the ranges into arrays by calling .array on them
(and importing std.array first), but this will cause allocations.