From 39efc7c3e3a08580f00a19678d2975608d41aa17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Wed, 19 Feb 2014 11:27:50 +0100 Subject: Optimize QVector::mid Change-Id: Iff7d9ec85a095c6712e6045e7708bb88eac629e1 Reviewed-by: Oswald Buddenhagen --- src/corelib/tools/qvector.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h index 9692477e18..c547cec7be 100644 --- a/src/corelib/tools/qvector.h +++ b/src/corelib/tools/qvector.h @@ -833,11 +833,13 @@ Q_OUTOFLINE_TEMPLATE QVector QVector::mid(int pos, int len) const break; } - QVector copy; - copy.reserve(len); - for (int i = pos; i < pos + len; ++i) - copy += at(i); - return copy; + QVector midResult; + midResult.reallocData(0, len); + T *srcFrom = d->begin() + pos; + T *srcTo = d->begin() + pos + len; + midResult.copyConstruct(srcFrom, srcTo, midResult.data()); + midResult.d->size = len; + return midResult; } template -- cgit v1.2.3