key_iterator 类
class QHash::key_iteratorQHash::key_iterator 类提供了一个 STL 样式的常量迭代器,用于 QHash 中的键。 更多信息...
公共函数
QHash | base() const |
bool | operator!=(QHash |
const Key & | operator*() const |
QHash | operator++() |
QHash | operator++(int) |
const Key * | operator->() const |
bool | operator==(QHash |
详细描述
QHash::key_iterator 实质上与 QHash::const_iterator 类似,区别在于 operator*() 和 operator->() 返回的是键而不是值。
对于大多数用途,应使用 QHash::iterator 和 QHash::const_iterator,您可以通过调用 QHash::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; }
然而,为了使 QHash 的键与 STL 样式算法具有互操作性,我们需要一个迭代器,它解引用到键而不是值。有了 QHash::key_iterator,我们可以将一个算法应用于键的范围,而不必调用 QHash::keys(),这非常低效,因为它需要一次 QHash 迭代以及内存分配来创建一个临时的 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());
QHash::key_iterator 是 const 的,无法修改键。
默认的 QHash::key_iterator 构造函数创建了一个未初始化的迭代器。您必须使用 QHash 函数(如 QHash::keyBegin() 或 QHash::keyEnd())来初始化它。
警告:隐式共享容器上的迭代器工作方式与 STL 迭代器不完全相同。您应该在活动的容器上避免复制容器。有关更多信息,请阅读 隐式共享迭代器问题。
另请参阅:QHash::const_iterator 和 QHash::iterator。
成员函数文档
[noexcept]
QHash<键, T>::const_iterator key_iterator::base() const
返回此 const_iterator 所基于的底层 key_iterator。
[noexcept]
bool key_iterator::operator!=(QHash<键, T>::key_iterator other) const
如果 other 指向与此迭代器不同的项,则返回 true
;否则返回 false
。
也见 operator==。
[noexcept]
const 键 &key_iterator::operator*() const
返回当前项的键。
[noexcept]
QHash<键, T>::key_iterator &key_iterator::operator++()
前缀 ++ 操作符 (++i
) 将迭代器推进到哈希中的下一个项,并返回对新的当前项的迭代器。
在 QHash::keyEnd() 上调用此函数会导致未定义的结果。
[noexcept]
QHash<键, T>::key_iterator key_iterator::operator++(int)
这是一个重载函数。
后缀 ++ 操作符 (i++
) 将迭代器推进到哈希中的下一个项,并返回对先前项的迭代器。
[noexcept]
const 键 *key_iterator::operator->() const
返回当前项键的指针。
[noexcept]
bool key_iterator::operator==(QHash<键, T>::key_iterator other) const
如果 other 指向与此迭代器相同的项,则返回 true
;否则返回 false
。
也见 operator!=。
© 2024 Qt 公司有限公司。此处包含的文档贡献归其各自的拥有者所有。此处提供的文档是根据自由软件基金会发布的 GNU自由文档许可证版本1.3 的条款许可的。Qt及其标志是芬兰的Qt公司及其在全世界其他国家的商标。所有其他商标均为其各自业主的财产。