Mercurial > octave
changeset 23420:1fee389bd04b
Use std::copy_n rather than std::copy for clarity in liboctave/array.
* Array.cc, Array.h, Sparse.cc, Sparse.h, boolSparse.cc, idx-vector.cc,
idx-vector.h: Use std::copy_n rather than std::copy when clarity of code would
be improved.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 21 Apr 2017 08:35:17 -0700 |
parents | 75a4b9a34999 |
children | 0bfdfd5870d7 |
files | liboctave/array/Array.cc liboctave/array/Array.h liboctave/array/Sparse.cc liboctave/array/Sparse.h liboctave/array/boolSparse.cc liboctave/array/idx-vector.cc liboctave/array/idx-vector.h |
diffstat | 7 files changed, 61 insertions(+), 65 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/array/Array.cc Thu Apr 20 20:02:23 2017 -0700 +++ b/liboctave/array/Array.cc Fri Apr 21 08:35:17 2017 -0700 @@ -416,7 +416,7 @@ octave_idx_type len = dim[0]; if (step == 1) { - std::copy (src, src + len, dest); + std::copy_n (src, len, dest); dest += len; } else @@ -691,7 +691,7 @@ { if (lev == 0) { - std::copy (src, src+cext[0], dest); + std::copy_n (src, cext[0], dest); std::fill_n (dest + cext[0], dext[0] - cext[0], rfv); } else @@ -964,7 +964,7 @@ Array<T> tmp (Array<T> (dim_vector (nn, 1)), dv, 0, n); T *dest = tmp.fortran_vec (); - std::copy (data (), data () + nx, dest); + std::copy_n (data (), nx, dest); dest[nx] = rfv; *this = tmp; @@ -977,7 +977,7 @@ octave_idx_type n0 = std::min (n, nx); octave_idx_type n1 = n - n0; - std::copy (data (), data () + n0, dest); + std::copy_n (data (), n0, dest); std::fill_n (dest + n0, n1, rfv); *this = tmp; @@ -1005,14 +1005,14 @@ const T *src = data (); if (r == rx) { - std::copy (src, src + r * c0, dest); + std::copy_n (src, r * c0, dest); dest += r * c0; } else { for (octave_idx_type k = 0; k < c0; k++) { - std::copy (src, src + r0, dest); + std::copy_n (src, r0, dest); src += rx; dest += r0; std::fill_n (dest, r1, rfv); @@ -1433,7 +1433,7 @@ Array<T> tmp (dim_vector (col_vec ? m : 1, ! col_vec ? m : 1)); const T *src = data (); T *dest = tmp.fortran_vec (); - std::copy (src, src + l, dest); + std::copy_n (src, l, dest); std::copy (src + u, src + n, dest + l); *this = tmp; } @@ -1482,7 +1482,7 @@ l *= dl; u *= dl; n *= dl; for (octave_idx_type k = 0; k < du; k++) { - std::copy (src, src + l, dest); + std::copy_n (src, l, dest); dest += l; std::copy (src + u, src + n, dest); dest += n - u;
--- a/liboctave/array/Array.h Thu Apr 20 20:02:23 2017 -0700 +++ b/liboctave/array/Array.h Fri Apr 21 08:35:17 2017 -0700 @@ -140,14 +140,14 @@ ArrayRep (T *d, octave_idx_type l) : data (new T [l]), len (l), count (1) { - std::copy (d, d+l, data); + std::copy_n (d, l, data); } template <typename U> ArrayRep (U *d, octave_idx_type l) : data (new T [l]), len (l), count (1) { - std::copy (d, d+l, data); + std::copy_n (d, l, data); } // Use new instead of setting data to 0 so that fortran_vec and @@ -167,7 +167,7 @@ ArrayRep (const ArrayRep& a) : data (new T [a.len]), len (a.len), count (1) { - std::copy (a.data, a.data + a.len, data); + std::copy_n (a.data, a.len, data); } ~ArrayRep (void) { delete [] data; }
--- a/liboctave/array/Sparse.cc Thu Apr 20 20:02:23 2017 -0700 +++ b/liboctave/array/Sparse.cc Fri Apr 21 08:35:17 2017 -0700 @@ -170,13 +170,13 @@ octave_idx_type min_nzmx = std::min (nz, nzmx); octave_idx_type * new_ridx = new octave_idx_type [nz]; - std::copy (r, r + min_nzmx, new_ridx); + std::copy_n (r, min_nzmx, new_ridx); delete [] r; r = new_ridx; T * new_data = new T [nz]; - std::copy (d, d + min_nzmx, new_data); + std::copy_n (d, min_nzmx, new_data); delete [] d; d = new_data; @@ -979,7 +979,7 @@ if (c != rep->ncols) { octave_idx_type *new_cidx = new octave_idx_type [c+1]; - std::copy (rep->c, rep->c + std::min (c, rep->ncols) + 1, new_cidx); + std::copy_n (rep->c, std::min (c, rep->ncols) + 1, new_cidx); delete [] rep->c; rep->c = new_cidx; @@ -1176,8 +1176,8 @@ // Copy data and adjust indices. octave_idx_type nz_new = nz - (ui - li); *this = Sparse<T> (nr - (ub - lb), 1, nz_new); - std::copy (tmp.data (), tmp.data () + li, data ()); - std::copy (tmp.ridx (), tmp.ridx () + li, xridx ()); + std::copy_n (tmp.data (), li, data ()); + std::copy_n (tmp.ridx (), li, xridx ()); std::copy (tmp.data () + ui, tmp.data () + nz, xdata () + li); mx_inline_sub (nz - ui, xridx () + li, tmp.ridx () + ui, ub - lb); xcidx (1) = nz_new; @@ -1203,8 +1203,8 @@ } *this = Sparse<T> (nr - sl, 1, nz_new); - std::copy (ridx_new, ridx_new + nz_new, ridx ()); - std::copy (data_new, data_new + nz_new, xdata ()); + std::copy_n (ridx_new, nz_new, ridx ()); + std::copy_n (data_new, nz_new, xdata ()); xcidx (1) = nz_new; } } @@ -1219,10 +1219,10 @@ octave_idx_type ubi = tmp.cidx (ub); octave_idx_type new_nz = nz - (ubi - lbi); *this = Sparse<T> (1, nc - (ub - lb), new_nz); - std::copy (tmp.data (), tmp.data () + lbi, data ()); + std::copy_n (tmp.data (), lbi, data ()); std::copy (tmp.data () + ubi, tmp.data () + nz , xdata () + lbi); std::fill_n (ridx (), new_nz, static_cast<octave_idx_type> (0)); - std::copy (tmp.cidx () + 1, tmp.cidx () + 1 + lb, cidx () + 1); + std::copy_n (tmp.cidx () + 1, lb, cidx () + 1); mx_inline_sub (nc - ub, xcidx () + 1, tmp.cidx () + ub + 1, ubi - lbi); } @@ -1278,11 +1278,11 @@ octave_idx_type new_nz = nz - (ubi - lbi); *this = Sparse<T> (nr, nc - (ub - lb), new_nz); - std::copy (tmp.data (), tmp.data () + lbi, data ()); - std::copy (tmp.ridx (), tmp.ridx () + lbi, ridx ()); + std::copy_n (tmp.data (), lbi, data ()); + std::copy_n (tmp.ridx (), lbi, ridx ()); std::copy (tmp.data () + ubi, tmp.data () + nz, xdata () + lbi); std::copy (tmp.ridx () + ubi, tmp.ridx () + nz, xridx () + lbi); - std::copy (tmp.cidx () + 1, tmp.cidx () + 1 + lb, cidx () + 1); + std::copy_n (tmp.cidx () + 1, lb, cidx () + 1); mx_inline_sub (nc - ub, xcidx () + lb + 1, tmp.cidx () + ub + 1, ubi - lbi); } @@ -1453,7 +1453,7 @@ // Copy data and adjust indices. octave_idx_type nz_new = ui - li; retval = Sparse<T> (ub - lb, 1, nz_new); - std::copy (data () + li, data () + li + nz_new, retval.data ()); + std::copy_n (data () + li, nz_new, retval.data ()); mx_inline_sub (nz_new, retval.xridx (), ridx () + li, lb); retval.xcidx (1) = nz_new; } @@ -1466,7 +1466,7 @@ for (octave_idx_type j = 0; j < nz; j++) retval.ridx (j) = nr - ridx (nz - j - 1) - 1; - std::copy (cidx (), cidx () + 2, retval.cidx ()); + std::copy_n (cidx (), 2, retval.cidx ()); std::reverse_copy (data (), data () + nz, retval.data ()); } else @@ -1541,7 +1541,7 @@ octave_idx_type ubi = cidx (ub); octave_idx_type new_nz = ubi - lbi; retval = Sparse<T> (1, ub - lb, new_nz); - std::copy (data () + lbi, data () + lbi + new_nz, retval.data ()); + std::copy_n (data () + lbi, new_nz, retval.data ()); std::fill_n (retval.ridx (), new_nz, static_cast<octave_idx_type> (0)); mx_inline_sub (ub - lb + 1, retval.cidx (), cidx () + lb, lbi); } @@ -1627,8 +1627,8 @@ octave_idx_type ubi = cidx (ub); octave_idx_type new_nz = ubi - lbi; retval = Sparse<T> (nr, ub - lb, new_nz); - std::copy (data () + lbi, data () + lbi + new_nz, retval.data ()); - std::copy (ridx () + lbi, ridx () + lbi + new_nz, retval.ridx ()); + std::copy_n (data () + lbi, new_nz, retval.data ()); + std::copy_n (ridx () + lbi, new_nz, retval.ridx ()); mx_inline_sub (ub - lb + 1, retval.cidx (), cidx () + lb, lbi); } else @@ -1650,8 +1650,8 @@ octave_idx_type lj = retval.xcidx (j); octave_idx_type nzj = retval.xcidx (j+1) - lj; - std::copy (data () + ljj, data () + ljj + nzj, retval.data () + lj); - std::copy (ridx () + ljj, ridx () + ljj + nzj, retval.ridx () + lj); + std::copy_n (data () + ljj, nzj, retval.data () + lj); + std::copy_n (ridx () + ljj, nzj, retval.ridx () + lj); } } } @@ -1881,7 +1881,7 @@ } // Copy data and adjust indices from rhs. - std::copy (rhs.data (), rhs.data () + rnz, data () + li); + std::copy_n (rhs.data (), rnz, data () + li); mx_inline_add (rnz, ridx () + li, rhs.ridx (), lb); } else @@ -1892,11 +1892,11 @@ *this = Sparse<T> (nr, 1, new_nz); // Head ... - std::copy (tmp.data (), tmp.data () + li, data ()); - std::copy (tmp.ridx (), tmp.ridx () + li, ridx ()); + std::copy_n (tmp.data (), li, data ()); + std::copy_n (tmp.ridx (), li, ridx ()); // new stuff ... - std::copy (rhs.data (), rhs.data () + rnz, data () + li); + std::copy_n (rhs.data (), rnz, data () + li); mx_inline_add (rnz, ridx () + li, rhs.ridx (), lb); // ...tail @@ -1938,8 +1938,8 @@ // Disassembly our matrix... Array<octave_idx_type> new_ri (dim_vector (new_nz, 1)); Array<T> new_data (dim_vector (new_nz, 1)); - std::copy (tmp.ridx (), tmp.ridx () + nz, new_ri.fortran_vec ()); - std::copy (tmp.data (), tmp.data () + nz, new_data.fortran_vec ()); + std::copy_n (tmp.ridx (), nz, new_ri.fortran_vec ()); + std::copy_n (tmp.data (), nz, new_data.fortran_vec ()); // ... insert new data (densified) ... idx.copy_data (new_ri.fortran_vec () + nz); new_data.assign (idx_vector (nz, new_nz), rhs.array_value ()); @@ -2065,8 +2065,8 @@ } // Copy data and indices from rhs. - std::copy (rhs.data (), rhs.data () + rnz, data () + li); - std::copy (rhs.ridx (), rhs.ridx () + rnz, ridx () + li); + std::copy_n (rhs.data (), rnz, data () + li); + std::copy_n (rhs.ridx (), rnz, ridx () + li); mx_inline_add (ub - lb, cidx () + lb + 1, rhs.cidx () + 1, li); @@ -2080,13 +2080,13 @@ *this = Sparse<T> (nr, nc, new_nz); // Head... - std::copy (tmp.data (), tmp.data () + li, data ()); - std::copy (tmp.ridx (), tmp.ridx () + li, ridx ()); - std::copy (tmp.cidx () + 1, tmp.cidx () + 1 + lb, cidx () + 1); + std::copy_n (tmp.data (), li, data ()); + std::copy_n (tmp.ridx (), li, ridx ()); + std::copy_n (tmp.cidx () + 1, lb, cidx () + 1); // new stuff... - std::copy (rhs.data (), rhs.data () + rnz, data () + li); - std::copy (rhs.ridx (), rhs.ridx () + rnz, ridx () + li); + std::copy_n (rhs.data (), rnz, data () + li); + std::copy_n (rhs.ridx (), rnz, ridx () + li); mx_inline_add (ub - lb, cidx () + lb + 1, rhs.cidx () + 1, li); @@ -2144,19 +2144,15 @@ { // from rhs octave_idx_type k = rhs.cidx (j); - std::copy (rhs.data () + k, rhs.data () + k + u - l, - xdata () + l); - std::copy (rhs.ridx () + k, rhs.ridx () + k + u - l, - xridx () + l); + std::copy_n (rhs.data () + k, u - l, xdata () + l); + std::copy_n (rhs.ridx () + k, u - l, xridx () + l); } else { // original octave_idx_type k = tmp.cidx (i); - std::copy (tmp.data () + k, tmp.data () + k + u - l, - xdata () + l); - std::copy (tmp.ridx () + k, tmp.ridx () + k + u - l, - xridx () + l); + std::copy_n (tmp.data () + k, u - l, xdata () + l); + std::copy_n (tmp.ridx () + k, u - l, xridx () + l); } }
--- a/liboctave/array/Sparse.h Thu Apr 20 20:02:23 2017 -0700 +++ b/liboctave/array/Sparse.h Fri Apr 21 08:35:17 2017 -0700 @@ -202,9 +202,9 @@ dimensions (a.dimensions) { octave_idx_type nz = a.nnz (); - std::copy (a.rep->d, a.rep->d + nz, rep->d); - std::copy (a.rep->r, a.rep->r + nz, rep->r); - std::copy (a.rep->c, a.rep->c + rep->ncols + 1, rep->c); + std::copy_n (a.rep->d, nz, rep->d); + std::copy_n (a.rep->r, nz, rep->r); + std::copy_n (a.rep->c, rep->ncols + 1, rep->c); } // No type conversion case.
--- a/liboctave/array/boolSparse.cc Thu Apr 20 20:02:23 2017 -0700 +++ b/liboctave/array/boolSparse.cc Fri Apr 21 08:35:17 2017 -0700 @@ -176,7 +176,7 @@ else { Array<octave_idx_type> tmp (dim_vector (nz, 1)); - std::copy (ridx (), ridx () + nz, tmp.fortran_vec ()); + std::copy_n (ridx (), nz, tmp.fortran_vec ()); retval = Sparse<bool> (Array<bool> (dim_vector (1, 1), true), idx_vector (tmp), idx_vector (static_cast<octave_idx_type> (0)), @@ -227,7 +227,7 @@ else { Array<octave_idx_type> tmp (dim_vector (nz, 1)); - std::copy (ridx (), ridx () + nz, tmp.fortran_vec ()); + std::copy_n (ridx (), nz, tmp.fortran_vec ()); retval = Sparse<double> (Array<double> (dim_vector (1, 1), 1.0), idx_vector (tmp), idx_vector (static_cast<octave_idx_type> (0)),
--- a/liboctave/array/idx-vector.cc Thu Apr 20 20:02:23 2017 -0700 +++ b/liboctave/array/idx-vector.cc Fri Apr 21 08:35:17 2017 -0700 @@ -475,7 +475,7 @@ octave_idx_type *new_data = new octave_idx_type [len]; new_rep->data = new_data; - std::copy (data, data + len, new_data); + std::copy_n (data, len, new_data); octave_sort<octave_idx_type> lsort; lsort.set_compare (ASCENDING); lsort.sort (new_data, len); @@ -552,7 +552,7 @@ octave_idx_type *new_data = new octave_idx_type [len]; new_rep->data = new_data; - std::copy (data, data + len, new_data); + std::copy_n (data, len, new_data); octave_sort<octave_idx_type> lsort; lsort.set_compare (ASCENDING); @@ -1082,7 +1082,7 @@ { idx_vector_rep * r = dynamic_cast<idx_vector_rep *> (rep); const octave_idx_type *rdata = r->get_data (); - std::copy (rdata, rdata + len, data); + std::copy_n (rdata, len, data); } break;
--- a/liboctave/array/idx-vector.h Thu Apr 20 20:02:23 2017 -0700 +++ b/liboctave/array/idx-vector.h Fri Apr 21 08:35:17 2017 -0700 @@ -631,7 +631,7 @@ switch (rep->idx_class ()) { case class_colon: - std::copy (src, src + len, dest); + std::copy_n (src, len, dest); break; case class_range: @@ -641,7 +641,7 @@ octave_idx_type step = r->get_step (); const T *ssrc = src + start; if (step == 1) - std::copy (ssrc, ssrc + len, dest); + std::copy_n (ssrc, len, dest); else if (step == -1) std::reverse_copy (ssrc - len + 1, ssrc + 1, dest); else if (step == 0) @@ -705,7 +705,7 @@ switch (rep->idx_class ()) { case class_colon: - std::copy (src, src + len, dest); + std::copy_n (src, len, dest); break; case class_range: @@ -715,7 +715,7 @@ octave_idx_type step = r->get_step (); T *sdest = dest + start; if (step == 1) - std::copy (src, src + len, sdest); + std::copy_n (src, len, sdest); else if (step == -1) std::reverse_copy (src, src + len, sdest - len + 1); else @@ -777,7 +777,7 @@ switch (rep->idx_class ()) { case class_colon: - std::fill (dest, dest + len, val); + std::fill_n (dest, len, val); break; case class_range: @@ -787,7 +787,7 @@ octave_idx_type step = r->get_step (); T *sdest = dest + start; if (step == 1) - std::fill (sdest, sdest + len, val); + std::fill_n (sdest, len, val); else if (step == -1) std::fill (sdest - len + 1, sdest + 1, val); else