On Tuesday, 13 August 2013 at 20:23:00 UTC, Craig Dillabaugh
wrote:
On Tuesday, 13 August 2013 at 19:50:37 UTC, Jonathan M Davis
wrote:
On Tuesday, August 13, 2013 21:22:24 Craig Dillabaugh wrote:
I have code that attempts to copy a slice of one array into
another using zip. However, the array is not updated. I am
guessing this is because modifying the returned tuple does not
modify the actual arrays.
Is there any way to do this.
Why not just use std.algorithm.copy, or even just assigning
one array to the
other? e.g.
dest[2 .. 5] = src[1 .. 4];
- Jonathan M Davis
These work reasonably well and I will likely use your
suggestions
here.
The one thing I get with zip that I lose using
std.algorithm.copy
or straight assignment of the slices is that it handles
mismatches in slice sizes automatically (it stops as soon as
either slice is exhausted).
For example
copy(array2[4..8], array1[9..$]);
where array1 had 10 elements fails because it copies data off
the
end of array1, and if I use straight assignment the slices must
be the same length.
Craig
warning: untested!
void myCopy(T)(T[] a, T[] b)
{
auto possible = min(a.length, b.length);
a[0 .. possible] = b[0 .. possible];
}
myCopy(array2[4..8], array1[9..$]);
Arrays only atm, but you could quite easily spruce that up in to
something much more generic.