www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Finding the maxElement of Two-Dimensional Array

reply Samir <samir aol.com> writes:
How come this works:

int[][] ta = [[2, 1, 4, 3], [3, 10, 2, 5]];
writeln(ta[1].maxElement); // 10

but I get an error when specifying the number of elements when 
declaring the array:

int[4][2] ta = [[2, 1, 4, 3], [3, 10, 2, 5]];
writeln(ta[1].maxElement); // get error on this line

Error: template std.algorithm.searching.maxElement cannot deduce 
function from argument types !()(int[4]), candidates are:
/home/samir/dlang/dmd-2.082.0/freebsd/bin64/../../src/phobos/std/algorith
/searching.d(3576):        std.algorithm.searching.maxElement(alias map = (a)
=> a, Range)(Range r) if (isInputRange!Range && !isInfinite!Range)
/home/samir/dlang/dmd-2.082.0/freebsd/bin64/../../src/phobos/std/algorith
/searching.d(3583):        std.algorithm.searching.maxElement(alias map = (a)
=> a, Range, RangeElementType = ElementType!Range)(Range r, RangeElementType
seed) if (isInputRange!Range && !isInfinite!Range &&
!is(CommonType!(ElementType!Range, RangeElementType) == void))

Thanks
Samir
Jun 30 2019
parent reply a11e99z <black80 bk.ru> writes:
On Sunday, 30 June 2019 at 15:22:42 UTC, Samir wrote:
 How come this works:
 int[4][2] ta = [[2, 1, 4, 3], [3, 10, 2, 5]];
 writeln(ta[1].maxElement); // get error on this line
try to take slice from static arrays writeln(ta[1][].maxElement); or use dynamic arrays (slices) int[][] ta = [[2, 1, 4, 3], [3, 10, 2, 5]]; // or auto ta
Jun 30 2019
parent Samir <samir aol.com> writes:
On Sunday, 30 June 2019 at 15:38:42 UTC, a11e99z wrote:
 try to take slice from static arrays
 writeln(ta[1][].maxElement);
That does what I am looking for. Thank you for the quick reply!
Jun 30 2019