The QMap::key_iterator 类提供 STL 样式 const 迭代器为 QMap and QMultiMap keys. 更多...
头: | #include <key_iterator> |
qmake: | QT += core |
Since: | Qt 5.6 |
key_iterator () = default | |
key_iterator (const_iterator o ) | |
const_iterator | base () const |
bool | operator!= (key_iterator other ) const |
const Key & | operator* () const |
key_iterator & | operator++ () |
key_iterator | operator++ ( int ) |
key_iterator & | operator-- () |
key_iterator | operator-- ( int ) |
const Key * | operator-> () const |
bool | operator== (key_iterator other ) const |
The QMap::key_iterator 类提供 STL 样式 const 迭代器为 QMap and QMultiMap keys.
QMap::key_iterator is essentially the same as QMap::const_iterator with the difference that operator*() and operator->() return a key instead of a value.
For most uses QMap::iterator and QMap::const_iterator should be used, you can easily access the key by calling QMap::iterator::key ():
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; }
However, to have interoperability between QMap 's keys and STL-style algorithms we need an iterator that dereferences to a key instead of a value. With QMap::key_iterator we can apply an algorithm to a range of keys without having to call QMap::keys (), which is inefficient as it costs one QMap iteration and memory allocation to create a temporary QList .
// 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());
QMap::key_iterator is const, it's not possible to modify the key.
默认 QMap::key_iterator constructor creates an uninitialized iterator. You must initialize it using a QMap function like QMap::keyBegin () 或 QMap::keyEnd ().
警告: Iterators on implicitly shared containers do not work exactly like STL-iterators. You should avoid copying a container while iterators are active on that container. For more information, read 隐式共享迭代器问题 .
另请参阅 QMap::const_iterator and QMap::iterator .
[default]
key_iterator::
key_iterator
()
Default constructs an instance of key_iterator.
Default constructs an instance of key_iterator.
Returns the underlying const_iterator this key_iterator is based on.
返回
true
if
other
指向与此迭代器不同的项;否则返回
false
.
另请参阅 operator== ().
Returns the current item's key.
The prefix ++ operator (
++i
) advances the iterator to the next item in the hash and returns an iterator to the new current item.
Calling this function on QMap::keyEnd () leads to undefined results.
另请参阅 operator-- ().
这是重载函数。
The postfix ++ operator (
i++
) advances the iterator to the next item in the hash and returns an iterator to the previous item.
The prefix -- operator (
--i
) makes the preceding item current and returns an iterator pointing to the new current item.
Calling this function on QMap::keyBegin () leads to undefined results.
另请参阅 operator++ ().
这是重载函数。
The postfix -- operator (
i--
) makes the preceding item current and returns an iterator pointing to the previous item.
Returns a pointer to the current item's key.
返回
true
if
other
points to the same item as this iterator; otherwise returns
false
.
另请参阅 operator!= ().