diff options
author | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-01-28 16:58:24 +0300 |
---|---|---|
committer | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-01-29 08:16:00 +0000 |
commit | f416561702e6162466ce23818a987db69a5053b5 (patch) | |
tree | 3c9110db102f4b1558f09937512d56e8852d977d /src/network | |
parent | 49388f3dfde04a52cfc80cd628c2bc9af92a19e6 (diff) |
QNetworkHeadersPrivate: use erase and std::remove_if with QList
... instead of using erase in a loop, with quadratic complexity.
Change-Id: I91053ddb58639615e8864e5be20861e7cceb815e
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/access/qnetworkrequest.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp index 9c187a12ec..c188918024 100644 --- a/src/network/access/qnetworkrequest.cpp +++ b/src/network/access/qnetworkrequest.cpp @@ -51,6 +51,8 @@ # include <stdio.h> #endif +#include <algorithm> + QT_BEGIN_NAMESPACE /*! @@ -991,13 +993,12 @@ void QNetworkHeadersPrivate::setCookedHeader(QNetworkRequest::KnownHeaders heade void QNetworkHeadersPrivate::setRawHeaderInternal(const QByteArray &key, const QByteArray &value) { - RawHeadersList::Iterator it = rawHeaders.begin(); - while (it != rawHeaders.end()) { - if (qstricmp(it->first.constData(), key.constData()) == 0) - it = rawHeaders.erase(it); - else - ++it; - } + auto firstEqualsKey = [&key](const RawHeaderPair &header) { + return qstricmp(header.first.constData(), key.constData()) == 0; + }; + rawHeaders.erase(std::remove_if(rawHeaders.begin(), rawHeaders.end(), + firstEqualsKey), + rawHeaders.end()); if (value.isNull()) return; // only wanted to erase key |