diff --git a/src/base/algorithm.h b/src/base/algorithm.h index 85fb25ff8..daac26d5f 100644 --- a/src/base/algorithm.h +++ b/src/base/algorithm.h @@ -54,16 +54,6 @@ namespace Algorithm it = (p(it.key(), it.value()) ? dict.erase(it) : ++it); } - // To be used with set types, such as QSet, std::set - template ::value, int> = 0> - void removeIf(T &set, UnaryPredicate &&p) - { - auto it = set.begin(); - while (it != set.end()) - it = (p(*it) ? set.erase(it) : ++it); - } - template List sorted(List list) { diff --git a/src/base/bittorrent/sessionimpl.cpp b/src/base/bittorrent/sessionimpl.cpp index 1c5930260..4aa31425a 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -1382,7 +1382,7 @@ void SessionImpl::processNextResumeData(ResumeSessionContext *context) } } - Algorithm::removeIf(resumeData.tags, [this, &torrentID](const QString &tag) + erase_if(resumeData.tags, [this, &torrentID](const QString &tag) { if (hasTag(tag)) return false; diff --git a/src/base/http/server.cpp b/src/base/http/server.cpp index 029c4396f..fae8caaff 100644 --- a/src/base/http/server.cpp +++ b/src/base/http/server.cpp @@ -148,7 +148,7 @@ void Server::removeConnection(Connection *connection) void Server::dropTimedOutConnection() { - Algorithm::removeIf(m_connections, [](Connection *connection) + erase_if(m_connections, [](Connection *connection) { if (!connection->hasExpired(KEEP_ALIVE_DURATION)) return false; diff --git a/src/base/orderedset.h b/src/base/orderedset.h index e43597a30..4e62f58fd 100644 --- a/src/base/orderedset.h +++ b/src/base/orderedset.h @@ -58,7 +58,7 @@ public: ThisType &intersect(const ThisType &other) { - Algorithm::removeIf(*this, [&other](const value_type &value) -> bool + std::erase_if(*this, [&other](const value_type &value) -> bool { return !other.contains(value); }); diff --git a/src/webui/api/synccontroller.cpp b/src/webui/api/synccontroller.cpp index e737d4cd7..de2af6563 100644 --- a/src/webui/api/synccontroller.cpp +++ b/src/webui/api/synccontroller.cpp @@ -957,8 +957,7 @@ void SyncController::onTorrentTrackersChanged(BitTorrent::Torrent *torrent) const TorrentID torrentID = torrent->id(); Algorithm::removeIf(m_knownTrackers - , [this, torrentID, currentTrackers] - (const QString &knownTracker, QSet &torrentIDs) + , [this, torrentID, currentTrackers](const QString &knownTracker, QSet &torrentIDs) { if (auto idIter = torrentIDs.find(torrentID) ; (idIter != torrentIDs.end()) && !currentTrackers.contains(knownTracker)) diff --git a/test/testalgorithm.cpp b/test/testalgorithm.cpp index 8309bfb4e..3949518d0 100644 --- a/test/testalgorithm.cpp +++ b/test/testalgorithm.cpp @@ -91,34 +91,11 @@ private slots: } } - void testNonMappedTypeRemoveIf() const + void testSorted() const { - { - QSet data = - { - 'a', - 'b', - 'c', - 'b', - 'd' - }; - Algorithm::removeIf(data, [](const char value) - { - return (value == 'b'); - }); - QCOMPARE(data.size(), 3); - QVERIFY(data.contains('a')); - QVERIFY(data.contains('c')); - QVERIFY(data.contains('d')); - } - { - std::set data; - Algorithm::removeIf(data, [](const char value) - { - return (value == 'b'); - }); - QVERIFY(data.empty()); - } + const QStringList list = {u"c"_s, u"b"_s, u"a"_s}; + const QStringList sortedList = {u"a"_s, u"b"_s, u"c"_s}; + QCOMPARE(Algorithm::sorted(list), sortedList); } };