From: Alexei Sheplyakov Date: Sat, 8 Aug 2009 10:03:15 +0000 (+0300) Subject: modular_matrix: don't use STL iterators in {mul, sub}_col and friends. X-Git-Tag: release_1-6-0~71 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=59ec13895c97ffd74979a0b811a7571f6de56386 modular_matrix: don't use STL iterators in {mul, sub}_col and friends. Not using STL iterators makes the code simpler and cleaner. Also we don't have to argue whether the standard ([lib.random.access.iterators]) imposes any pre/post-condictions on operator+=. --- diff --git a/ginac/factor.cpp b/ginac/factor.cpp index 2f9157b9..c82e7440 100644 --- a/ginac/factor.cpp +++ b/ginac/factor.cpp @@ -691,90 +691,76 @@ public: cl_MI operator()(size_t row, size_t col) const { return m[row*c + col]; } void mul_col(size_t col, const cl_MI x) { - mvec::iterator i = m.begin() + col; for ( size_t rc=0; rc::iterator i = m.begin() + row*c; for ( size_t cc=0; cc::iterator i1 = m.begin() + row1*c; - vector::iterator i2 = m.begin() + row2*c; for ( size_t cc=0; cc::iterator i1 = m.begin() + row1*c; - vector::iterator i2 = m.begin() + row2*c; for ( size_t cc=0; cc& newrow) { - mvec::iterator i1 = m.begin() + row*c; - mvec::const_iterator i2 = newrow.begin(), end = newrow.end(); - for ( ; i2 != end; ++i1, ++i2 ) { - *i1 = *i2; + for (std::size_t i2 = 0; i2 < newrow.size(); ++i2) { + std::size_t i1 = row*c + i2; + m[i1] = newrow[i2]; } } mvec::const_iterator row_begin(size_t row) const { return m.begin()+row*c; }