# HG changeset patch # User Rik # Date 1492831593 25200 # Node ID 206a7eb1561b90aa019df631670dadac69f012c7 # Parent 0bfdfd5870d7aca4129d4f9263d1f6a66485d1b3 Use more std:: routines in liboctave/array header files. * MDiagArray2.h (nnz): Use std::count_if instead of hand-rolled for loop. * dim-vector.h (all_zero): Use std::all_of instead of for loop. * dim-vector.h (any_zero): Use std::any_of instead of for loop. * dim-vector.h (any_neg): Use std::any_of instead of for loop. * dim-vector.h (operator ==): Use std::equal instead of for loop. diff -r 0bfdfd5870d7 -r 206a7eb1561b liboctave/array/MDiagArray2.h --- a/liboctave/array/MDiagArray2.h Fri Apr 21 11:14:06 2017 -0700 +++ b/liboctave/array/MDiagArray2.h Fri Apr 21 20:26:33 2017 -0700 @@ -88,19 +88,14 @@ octave_idx_type nnz (void) const { - octave_idx_type retval = 0; - const T *d = this->data (); octave_idx_type nel = this->length (); - for (octave_idx_type i = 0; i < nel; i++) - { - if (d[i] != T ()) - retval++; - } + const T zero = T (); - return retval; + return std::count_if (d, d + nel, + [zero] (T elem) { return elem != zero; }); } MArray diag (octave_idx_type k = 0) const diff -r 0bfdfd5870d7 -r 206a7eb1561b liboctave/array/dim-vector.h --- a/liboctave/array/dim-vector.h Fri Apr 21 11:14:06 2017 -0700 +++ b/liboctave/array/dim-vector.h Fri Apr 21 20:26:33 2017 -0700 @@ -336,18 +336,8 @@ bool all_zero (void) const { - bool retval = true; - - for (int i = 0; i < ndims (); i++) - { - if (xelem (i) != 0) - { - retval = false; - break; - } - } - - return retval; + return std::all_of (rep, rep + ndims (), + [] (octave_idx_type dim) { return dim == 0; }); } bool empty_2d (void) const @@ -362,18 +352,8 @@ bool any_zero (void) const { - bool retval = false; - - for (int i = 0; i < ndims (); i++) - { - if (xelem (i) == 0) - { - retval = true; - break; - } - } - - return retval; + return std::any_of (rep, rep + ndims (), + [] (octave_idx_type dim) { return dim == 0; }); } int num_ones (void) const; @@ -416,14 +396,8 @@ bool any_neg (void) const { - int n_dims = ndims (); - int i; - - for (i = 0; i < n_dims; i++) - if (xelem (i) < 0) - break; - - return i < n_dims; + return std::any_of (rep, rep + ndims (), + [] (octave_idx_type dim) { return dim < 0; }); } dim_vector squeeze (void) const; @@ -561,7 +535,7 @@ octave_idx_type k = 1; for (int i = 0; i < nd; i++) - retval.rep[i] = k *= rep[i]; + retval.rep[i] = (k *= rep[i]); return retval; } @@ -589,26 +563,13 @@ if (a.rep == b.rep) return true; - bool retval = true; - int a_len = a.ndims (); int b_len = b.ndims (); if (a_len != b_len) - retval = false; - else - { - for (int i = 0; i < a_len; i++) - { - if (a(i) != b(i)) - { - retval = false; - break; - } - } - } + return false; - return retval; + return std::equal (a.rep, a.rep + a_len, b.rep); } inline bool