key_iterator类
类 QMultiHash::key_iteratorQMultiHash::key_iterator 类为 QMultiHash 键提供了一种 STL 风格的 const 迭代器。 更多...
公共函数
QMultiHash | base() const |
bool | operator!=(QMultiHash |
const Key & | operator*() const |
QMultiHash | operator++() |
QMultiHash | operator++(int) |
const Key * | operator->() const |
bool | operator==(QMultiHash |
详细描述
QMultiHash::key_iterator 实质上与 QMultiHash::const_iterator 相同,不同之处在于 operator*() 和 operator->() 返回键而不是值。
对于大多数用途应使用 QMultiHash::iterator 和 QMultiHash::const_iterator,您可以通过调用 QMultiHash::iterator::key() 轻易地访问键
for (auto it = hash.cbegin(), end = hash.cend(); it != end; ++it) { cout << "The key: " << it.key() << endl; cout << "The value: " << qPrintable(it.value()) << endl; cout << "Also the value: " << qPrintable(*it) << endl; }
然而,为了使 QMultiHash 的键与 STL 风格的算法兼容,我们需要一个解引用为键而不是值的迭代器。使用 QMultiHash::key_iterator,我们可以将算法应用于键的范围,而无需调用 QMultiHash::keys(),这效率低下,因为它需要一次 QMultiHash 迭代和内存分配来创建临时 QList。
// Inefficient, keys() is expensive QList<int> keys = hash.keys(); int numPrimes = std::count_if(keys.cbegin(), keys.cend(), isPrimeNumber); qDeleteAll(hash2.keys()); // Efficient, no memory allocation needed int numPrimes = std::count_if(hash.keyBegin(), hash.keyEnd(), isPrimeNumber); qDeleteAll(hash2.keyBegin(), hash2.keyEnd());
QMultiHash::key_iterator 是 const 的,无法修改键。
默认的 QMultiHash::key_iterator 构造函数创建了一个未初始化的迭代器。您必须使用 QMultiHash 函数(如 QMultiHash::keyBegin() 或 QMultiHash::keyEnd())来初始化它。
警告:在隐式共享容器上的迭代器不与 STL 迭代器完全相同。在容器上激活迭代器时,应避免复制容器。有关更多信息,请参阅 隐式共享迭代器问题。
另请参阅:QMultiHash::const_iterator 和 QMultiHash::iterator。
成员函数文档
[noexcept]
QMultiHash<Key, T>::const_iterator key_iterator::base() const
返回基于此 const_iterator 的底层数据。
[noexcept]
bool key_iterator::operator!=(QMultiHash<Key, T>::key_iterator other) const
如果 other 指向的项与此迭代器不同,则返回 true
;否则返回 false
。
另见 operator==().
[noexcept]
const Key &key_iterator::operator*() const
返回当前项的键。
[noexcept]
QMultiHash<Key, T>::key_iterator &key_iterator::operator++()
前置 ++ 操作符 (++i
) 将迭代器移动到哈希表的下一个项,并返回对新的当前项的迭代器。
在 QMultiHash::keyEnd() 上调用此函数会导致未定义的结果。
[noexcept]
QMultiHash<Key, T>::key_iterator key_iterator::operator++(int)
这是一个重载函数。
后置 ++ 操作符 (i++
) 将迭代器移动到哈希表的下一个项,并返回对上一个项的迭代器。
[noexcept]
const Key *key_iterator::operator->() const
返回当前项键的指针。
[noexcept]
bool key_iterator::operator==(QMultiHash<Key, T>::key_iterator other) const
如果 other 指向与此迭代器相同的项,则返回 true
;否则返回 false
。
另见 operator!=().
© 2024 Qt 公司有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档根据自由软件基金会的发布,受 GNU 自由文档许可协议版本 1.3 的条款许可。Qt 和相关标志是芬兰及其它国家和地区 Qt 公司的商标。所有其他商标属于其各自所有者。