diff options
author | Sérgio Martins <sergio.martins@kdab.com> | 2015-07-24 20:30:01 +0100 |
---|---|---|
committer | Sérgio Martins <sergio.martins@kdab.com> | 2015-07-28 19:11:12 +0000 |
commit | 07f27fcf6d4f046bbea6c3155efa78128e164da4 (patch) | |
tree | 177ed098a3924965ef9b1028ae97918e834de7c5 /src/corelib/doc/snippets/code/src_corelib_tools_qmap.cpp | |
parent | 75244bf985e248bd3fccac532fc4a9cd1bf7722f (diff) |
Introduce QMap key iterators
So we can have interoperability with algorithms.
Motivated by inefficient code like qDeleteAll(map.keys())
[ChangeLog][QtCore][QMap] Added key iterators, accessible through
keyBegin() and keyEnd().
Change-Id: Ieee2f9ad031e9d1e845a71447746699bbe95b96c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/corelib/doc/snippets/code/src_corelib_tools_qmap.cpp')
-rw-r--r-- | src/corelib/doc/snippets/code/src_corelib_tools_qmap.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/corelib/doc/snippets/code/src_corelib_tools_qmap.cpp b/src/corelib/doc/snippets/code/src_corelib_tools_qmap.cpp index 7580b6bbaf..29e53fc700 100644 --- a/src/corelib/doc/snippets/code/src_corelib_tools_qmap.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_tools_qmap.cpp @@ -311,3 +311,22 @@ while (i != map.end() && i.key() == "plenty") { ++i; } //! [27] + +//! [keyiterator1] +for (QMap<int, QString>::const_iterator it = map.cbegin(), end = map.cend(); it != end; ++it) { + cout << "The key: " << it.key() << endl + cout << "The value: " << it.value() << endl; + cout << "Also the value: " << (*it) << endl; +} +//! [keyiterator1] + +//! [keyiterator2] +// Inefficient, keys() is expensive +QList<int> keys = map.keys(); +int numPrimes = std::count_if(map.cbegin(), map.cend(), isPrimeNumber); +qDeleteAll(map2.keys()); + +// Efficient, no memory allocation needed +int numPrimes = std::count_if(map.keyBegin(), map.keyEnd(), isPrimeNumber); +qDeleteAll(map2.keyBegin(), map2.keyEnd()); +//! [keyiterator2] |