key_iterator 类

class QMap ::key_iterator

The QMap::key_iterator 类提供 STL 样式 const 迭代器为 QMap and QMultiMap keys. 更多...

该类在 Qt 5.6 引入。

公共函数

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

详细描述

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() << Qt::endl
    cout << "The value: " << it.value() << Qt::endl;
    cout << "Also the value: " << (*it) << Qt::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 .

成员函数文档编制

const_iterator key_iterator:: base () const

Returns the underlying const_iterator this key_iterator is based on.

bool key_iterator:: operator!= ( key_iterator other ) const

返回 true if other 指向与此迭代器不同的项;否则返回 false .

另请参阅 operator== ().

const Key &key_iterator:: operator* () const

Returns the current item's key.

key_iterator &key_iterator:: operator++ ()

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-- ().

key_iterator key_iterator:: operator++ ( int )

这是重载函数。

The postfix ++ operator ( i++ ) advances the iterator to the next item in the hash and returns an iterator to the previous item.

key_iterator &key_iterator:: operator-- ()

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++ ().

key_iterator key_iterator:: operator-- ( int )

这是重载函数。

The postfix -- operator ( i-- ) makes the preceding item current and returns an iterator pointing to the previous item.

const Key *key_iterator:: operator-> () const

Returns a pointer to the current item's key.

bool key_iterator:: operator== ( key_iterator other ) const

返回 true if other points to the same item as this iterator; otherwise returns false .

另请参阅 operator!= ().