diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2020-10-16 19:16:29 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2020-12-01 18:55:55 +0100 |
commit | 62dad9be9e172597c56a970202299563aa04918e (patch) | |
tree | 30164786bdc708d2e3e33696ddba4fcfdf082b8b /src/corelib/tools/qcontainertools_impl.h | |
parent | c176525f13bfcea8649d9e987bdff0dc45a56bf7 (diff) |
QSet: add erase_if
[ChangeLog][QtCore][QSet] Added erase_if() for consistent
container erasure. Added removeIf() as a method.
Change-Id: I4af57b654036aa08bee3f769ab2f60be37115094
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/tools/qcontainertools_impl.h')
-rw-r--r-- | src/corelib/tools/qcontainertools_impl.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/corelib/tools/qcontainertools_impl.h b/src/corelib/tools/qcontainertools_impl.h index 79c41fee87..54de6a8815 100644 --- a/src/corelib/tools/qcontainertools_impl.h +++ b/src/corelib/tools/qcontainertools_impl.h @@ -198,6 +198,23 @@ auto sequential_erase_if(Container &c, Predicate &pred) return result; } +template <typename T, typename Predicate> +qsizetype qset_erase_if(QSet<T> &set, Predicate &pred) +{ + qsizetype result = 0; + auto it = set.begin(); + const auto e = set.end(); + while (it != e) { + if (pred(*it)) { + ++result; + it = set.erase(it); + } else { + ++it; + } + } + return result; +} + } // namespace QtPrivate QT_END_NAMESPACE |