Mercurial > hg > octave-nkf
diff src/Cell.cc @ 8290:7cbe01c21986
improve dense array indexing
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Mon, 20 Oct 2008 16:54:28 +0200 |
parents | 6c08e3921d3e |
children | 7e0f36dfefbe |
line wrap: on
line diff
--- a/src/Cell.cc +++ b/src/Cell.cc @@ -164,10 +164,14 @@ const octave_value& fill_val) { - for (octave_idx_type i = 0; i < idx_arg.length (); i++) - set_index (idx_arg(i).index_vector ()); + octave_idx_type len = idx_arg.length (); + + Array<idx_vector> ra_idx (len); - ::assign (*this, rhs, fill_val); + for (octave_idx_type i = 0; i < len; i++) + ra_idx(i) = idx_arg(i).index_vector (); + + Array<octave_value>::assign (ra_idx, rhs, fill_val); return *this; } @@ -176,11 +180,14 @@ Cell::delete_elements (const octave_value_list& idx_arg) { - Array<idx_vector> ra_idx (idx_arg.length ()); - for (octave_idx_type i = 0; i < idx_arg.length (); i++) + octave_idx_type len = idx_arg.length (); + + Array<idx_vector> ra_idx (len); + + for (octave_idx_type i = 0; i < len; i++) ra_idx.xelem (i) = idx_arg(i).index_vector (); - maybe_delete_elements (ra_idx); + Array<octave_value>::delete_elements (ra_idx); return *this; }