key_iterator 类
class QMap::key_iteratorQMap::key_iterator 类为 QMap 的键提供了一个 STL 风格的 const 迭代器。了解更多...
公共函数
QMap<键, T>::const_iterator | base() const |
bool | operator!=(QMap<键, T>::key_iterator other) const |
const 键 & | operator*() const |
QMap<键, T>::key_iterator & | operator++() |
QMap<键, T>::key_iterator | operator++(int) |
QMap<键, T>::key_iterator & | operator--() |
QMap<键, T>::key_iterator | operator--(int) |
const 键 * | operator->() const |
bool | operator==(QMap<键, T>::key_iterator other) const |
详细说明
QMap::key_iterator 与 QMap::const_iterator 实质上相同,区别在于 operator*() 和 operator->() 返回一个键而不是一个值。
对于大多数使用场景,应使用 QMap::iterator 和 QMap::const_iterator,您可以通过调用 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: " << qPrintable(it.value()) << endl; cout << "Also the value: " << qPrintable(*it) << endl; }
但是,为了在 QMap 的键和 STL 风格算法之间进行互操作性,我们需要一个引用到键而不是值的迭代器。使用 QMap::key_iterator,我们可以将算法应用于键的范围,而无需调用 QMap::keys(),这在效率上是不高的,因为它需要一次 QMap 迭代和内存分配来创建临时的 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 是 const 的,无法修改键。
默认的 QMap::key_iterator 构造函数创建了一个未初始化的迭代器。您必须使用类似 QMap::keyBegin() 或 QMap::keyEnd() 的 QMap 函数来初始化它。
警告:隐式共享容器上的迭代器工作方式与 STL-迭代器不完全相同。您应避免在容器活动迭代器上复制容器。更多信息,请参阅 隐式共享迭代器问题。
另请参阅:QMap::const_iterator 和 QMap::iterator。
成员函数文档
QMap<键, T>::const_iterator key_iterator::base() const
返回基于此 key_iterator 的基础 const_iterator。
bool key_iterator::operator!=(QMap<Key, T>::key_iterator other) const
如果other指向此迭代器指示的不同的项目,则返回true
;否则返回false
。
另请参阅operator==()。
const Key &key_iterator::operator*() const
返回当前项目的键。
QMap<Key, T>::key_iterator &key_iterator::operator++()
前缀++
运算符(++i
)将迭代器移动到哈希中的下一个项目,并返回对新当前项目的迭代器。
在QMap::keyEnd()上调用此函数会导致未定义的结果。
另请参阅operator--()。
QMap<Key, T>::key_iterator key_iterator::operator++(int)
这是一个重载函数。
后缀++
运算符(i++
)将迭代器移动到哈希中的下一个项目,并返回对先前项目的迭代器。
QMap<Key, T>::key_iterator &key_iterator::operator--()
前缀--
运算符(--i
)将前一个项目设为当前项目,并返回指向新当前项目的迭代器。
在QMap::keyBegin()上调用此函数会导致未定义的结果。
另请参阅operator++()。
QMap<Key, T>::key_iterator key_iterator::operator--(int)
这是一个重载函数。
后缀--
运算符(i--
)将前一个项目设为当前项目,并返回指向先前项目的迭代器。
const Key *key_iterator::operator->() const
返回当前项目键的指针。
bool key_iterator::operator==(QMap<Key, T>::key_iterator other) const
如果other指向此迭代器指示的相同项目,则返回true
;否则返回false
。
另请参阅operator!=()。
© 2024 Qt公司有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的<া href="http://www.gnu.org/licenses/fdl.html">GNU自由文档许可证版本1.3的条款授予的。Qt以及相应的商标是芬兰的Qt公司及其它国家/地区的商标。所有其他商标均为各自所有者的财产。