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>
This commit is contained in:
parent
49388f3dfd
commit
f416561702
@ -51,6 +51,8 @@
|
|||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -991,13 +993,12 @@ void QNetworkHeadersPrivate::setCookedHeader(QNetworkRequest::KnownHeaders heade
|
|||||||
|
|
||||||
void QNetworkHeadersPrivate::setRawHeaderInternal(const QByteArray &key, const QByteArray &value)
|
void QNetworkHeadersPrivate::setRawHeaderInternal(const QByteArray &key, const QByteArray &value)
|
||||||
{
|
{
|
||||||
RawHeadersList::Iterator it = rawHeaders.begin();
|
auto firstEqualsKey = [&key](const RawHeaderPair &header) {
|
||||||
while (it != rawHeaders.end()) {
|
return qstricmp(header.first.constData(), key.constData()) == 0;
|
||||||
if (qstricmp(it->first.constData(), key.constData()) == 0)
|
};
|
||||||
it = rawHeaders.erase(it);
|
rawHeaders.erase(std::remove_if(rawHeaders.begin(), rawHeaders.end(),
|
||||||
else
|
firstEqualsKey),
|
||||||
++it;
|
rawHeaders.end());
|
||||||
}
|
|
||||||
|
|
||||||
if (value.isNull())
|
if (value.isNull())
|
||||||
return; // only wanted to erase key
|
return; // only wanted to erase key
|
||||||
|
Loading…
x
Reference in New Issue
Block a user