On Wednesday, 1 February 2023 at 13:14:47 UTC, Siarhei Siamashka
wrote:
On Tuesday, 31 January 2023 at 01:04:41 UTC, Paul wrote:
Greetings,
for an array byte[3][3] myArr, I can code myArr[0] = 5 and
have:
5,5,5
0,0,0
0,0,0
Can I perform a similar assignment to the column? This,
myArr[][0] = 5, doesn't work.
This works fine for small arrays, but for large arrays such
access pattern is cache unfriendly. It's usually best to
redesign the code to avoid assignments to columns if possible
(for example, by working with a transposed array). The language
is not providing a convenient shortcut for something that is
usually undesirable and expensive. And I think that this is
actually reasonable.
If the code is slow, then profile and try to speed up parts that
need it. The slowness may be due to a problem like this, but not
always.
The OP could also try mir's slices.
```d
/+dub.sdl:
dependency "mir-algorithm" version="*"
+/
import mir.ndslice.fuse;
import std.stdio: writeln;
void main() {
auto x = [[0, 0, 0], [0, 0, 0]].fuse;
x[0, 0 .. $] = 5;
x[0 .. $, 1] = 5;
writeln(x);
}
```