Is there any way to check if array is dense or not?
bearophile
bearophileHUGS at lycos.com
Sun Nov 10 16:16:27 PST 2013
Mariusz `shd` Gliwiński:
> As described on
> http://wiki.dlang.org/Dense_multidimensional_arrays we can have
> dense and jagged arrays.
Built-in D arrays are always dense (unless you consider the
associative arrays). That page should name them "contiguous".
Sparse arrays are another thing, and they need to be implemented
in libraries:
http://en.wikipedia.org/wiki/Sparse_array
> Is it possible to check if an array is jagged or not by using
> some template like std.traits : isArray ?
To tell if a dynamic array is jagged you need a run-time tests,
something like this:
foreach (const row; matrix)
assert(row.length == matrix.front.length);
If you want to tell apart a regular dynamic array from the
contiguous one, you have to look at the array structure, all
dimensions but the last one need to be fixed-sized arrays. There
are traits to tell apart fixed sized arrays and dynamic ones, but
you need a recursive template. Why do you need this information?
So far I have not needed it.
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list