diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-01-28 16:48:36 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-02-02 10:20:00 +0000 |
commit | fdfd63053ae6b10af06553be3c1b15de274bebf7 (patch) | |
tree | e8fe0248ff2b926b0b351a012342fe4168911c2d /src/network/access/qnetworkdiskcache.cpp | |
parent | 1d3503b8f3b49b0f684e1caa504deb0d05f2c60a (diff) |
QtBase: avoid uses of Java-style iterators [QHash, QMap]
Java-style iterators are slower than STL-style ones, so
they should not be used in library code.
Replaced them with C++11 range-for, STL iterators or, in
one case, qDeleteAll().
In one case, avoid a double hash lookup by using erase(it)
instead of remove(it.key()), which we can now do without
detaching, due to the new erase() taking const_iterator.
Change-Id: I96174657fed70f76120b2c9d8190b4e70d5d8179
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/network/access/qnetworkdiskcache.cpp')
-rw-r--r-- | src/network/access/qnetworkdiskcache.cpp | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp index eb66a1a6a4..5d38ebcd86 100644 --- a/src/network/access/qnetworkdiskcache.cpp +++ b/src/network/access/qnetworkdiskcache.cpp @@ -114,11 +114,7 @@ QNetworkDiskCache::QNetworkDiskCache(QObject *parent) QNetworkDiskCache::~QNetworkDiskCache() { Q_D(QNetworkDiskCache); - QHashIterator<QIODevice*, QCacheItem*> it(d->inserting); - while (it.hasNext()) { - it.next(); - delete it.value(); - } + qDeleteAll(d->inserting); } /*! @@ -319,13 +315,11 @@ bool QNetworkDiskCache::remove(const QUrl &url) Q_D(QNetworkDiskCache); // remove is also used to cancel insertions, not a common operation - QHashIterator<QIODevice*, QCacheItem*> it(d->inserting); - while (it.hasNext()) { - it.next(); + for (auto it = d->inserting.cbegin(), end = d->inserting.cend(); it != end; ++it) { QCacheItem *item = it.value(); if (item && item->metaData.url() == url) { delete item; - d->inserting.remove(it.key()); + d->inserting.erase(it); return true; } } @@ -559,10 +553,7 @@ qint64 QNetworkDiskCache::expire() QFile file(name); if (name.contains(PREPARED_SLASH)) { - QHashIterator<QIODevice*, QCacheItem*> iterator(d->inserting); - while (iterator.hasNext()) { - iterator.next(); - QCacheItem *item = iterator.value(); + for (QCacheItem *item : qAsConst(d->inserting)) { if (item && item->file && item->file->fileName() == name) { delete item->file; item->file = 0; |