Mercurial > octave
changeset 23422:206a7eb1561b
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.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 21 Apr 2017 20:26:33 -0700 |
parents | 0bfdfd5870d7 |
children | 50fc8edb007b |
files | liboctave/array/MDiagArray2.h liboctave/array/dim-vector.h |
diffstat | 2 files changed, 12 insertions(+), 56 deletions(-) [+] |
line wrap: on
line diff
--- 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<T> diag (octave_idx_type k = 0) const
--- 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