diff options
author | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-01-27 11:42:06 +0300 |
---|---|---|
committer | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-01-28 14:03:35 +0000 |
commit | 9ac853059192a1f0da269ccdc03cb8a793473520 (patch) | |
tree | bda8fffbda6071359fe73c13faae23e8f16229a1 | |
parent | 41e59ae0fa146f62f5f04ca3237d6ba119c951a0 (diff) |
QHttpNetworkHeaderPrivate: use erase and std::remove_if with QList
... instead of using erase in a loop, with quadratic complexity.
Change-Id: I9527923dcfc3201776a59de53dd5c03ca4d80063
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
-rw-r--r-- | src/network/access/qhttpnetworkheader.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/network/access/qhttpnetworkheader.cpp b/src/network/access/qhttpnetworkheader.cpp index 60a55b0ef5..7199abbf17 100644 --- a/src/network/access/qhttpnetworkheader.cpp +++ b/src/network/access/qhttpnetworkheader.cpp @@ -39,6 +39,8 @@ #include "qhttpnetworkheader_p.h" +#include <algorithm> + #ifndef QT_NO_HTTP QT_BEGIN_NAMESPACE @@ -103,13 +105,12 @@ QList<QByteArray> QHttpNetworkHeaderPrivate::headerFieldValues(const QByteArray void QHttpNetworkHeaderPrivate::setHeaderField(const QByteArray &name, const QByteArray &data) { - QList<QPair<QByteArray, QByteArray> >::Iterator it = fields.begin(); - while (it != fields.end()) { - if (qstricmp(name.constData(), it->first) == 0) - it = fields.erase(it); - else - ++it; - } + auto firstEqualsName = [&name](const QPair<QByteArray, QByteArray> &header) { + return qstricmp(name.constData(), header.first) == 0; + }; + fields.erase(std::remove_if(fields.begin(), fields.end(), + firstEqualsName), + fields.end()); fields.append(qMakePair(name, data)); } |