Optimize QVector::mid
Change-Id: Iff7d9ec85a095c6712e6045e7708bb88eac629e1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>bb10
parent
7c17b0ad2b
commit
39efc7c3e3
|
|
@ -833,11 +833,13 @@ Q_OUTOFLINE_TEMPLATE QVector<T> QVector<T>::mid(int pos, int len) const
|
|||
break;
|
||||
}
|
||||
|
||||
QVector<T> copy;
|
||||
copy.reserve(len);
|
||||
for (int i = pos; i < pos + len; ++i)
|
||||
copy += at(i);
|
||||
return copy;
|
||||
QVector<T> 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 <typename T>
|
||||
|
|
|
|||
|
|
@ -1379,6 +1379,8 @@ void tst_QVector::mid() const
|
|||
list << "foo" << "bar" << "baz" << "bak" << "buck" << "hello" << "kitty";
|
||||
|
||||
QCOMPARE(list.mid(3, 3), QVector<QString>() << "bak" << "buck" << "hello");
|
||||
QCOMPARE(list.mid(6, 10), QVector<QString>() << "kitty");
|
||||
QCOMPARE(list.mid(-1, 20), list);
|
||||
QCOMPARE(list.mid(4), QVector<QString>() << "buck" << "hello" << "kitty");
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue