const_iterator 类

QHash::const_iterator

QHash::const_iterator 类提供了一个 STL 风格的 const 迭代器,用于 QHash。了解更多...

公共函数

const_iterator()
const_iterator(const QHash<Key, T>::iterator &other)
const Key &key() const
const T &value() const
booloperator!=(const QHash<Key, T>::const_iterator &other) const
const T &operator*() const
QHash<Key, T>::const_iterator &operator++()
QHash<Key, T>::const_iteratoroperator++(int)
const T *operator->() const
booloperator==(const QHash<Key, T>::const_iterator &other) const

详细描述

QHash简单迭代器允许您遍历一个 QHash。如果您在遍历时想修改 QHash,则必须使用 QHash::iterator。通常,如果不需要通过迭代器修改 QHash,我们可以对非 const QHash 使用 QHash::const_iterator,这会稍微提高代码的运行速度,并且可以增强代码的可读性。

默认的 QHash::const_iterator 构造函数创建一个未初始化的迭代器。在开始遍历之前,您必须使用 QHash::cbegin()、QHash::cend() 或 QHash::constFind() 等一等函数来初始化它。以下是一个打印存储在哈希中所有 (键,值) 对的典型循环示例

QHash<QString, int> hash;
hash.insert("January", 1);
hash.insert("February", 2);
...
hash.insert("December", 12);

for (auto i = hash.cbegin(), end = hash.cend(); i != end; ++i)
    cout << qPrintable(i.key()) << ": " << i.value() << endl;

QHash 与按键排序的 QMap 不同,它以任意的顺序存储其项目。唯一的保证是具有相同键的项目会连续出现(因为它们是使用 QMultiHash 插入的),从最近插入到最远插入的值。

可以对同一个哈希使用多个迭代器。但是,请注意,对 QHash 的任何修改(插入和删除项目)都可能导致迭代器失效。

向哈希中插入项或调用QHash::reserve() 或 QHash::squeeze() 等方法可能会使指向哈希的所有迭代器失效。迭代器只有在 QHash 不需要增长/缩小时才保证有效。重新散列操作发生后使用任何迭代器都会导致未定义行为。

但是,您可以使用QHash::erase() 方法安全地使用迭代器从哈希中删除条目。这个函数可以在迭代时安全调用,不会影响哈希中项的顺序。

警告:隐式共享容器的迭代器与 STL 迭代器不完全相同。在迭代器正在该容器上工作时,应避免复制容器。有关更多信息,请参阅隐式共享迭代器问题

另请参阅:QHash::iteratorQHash::key_iterator 以及 QHash::const_key_value_iterator

成员函数文档

[constexpr noexcept] const_iterator::const_iterator()

构建一个未初始化的迭代器。

在未初始化迭代器上调用 key(),value() 或 operator++() 是不允许的。在使用之前,使用 operator=() 将值分配给它。

另请参阅:QHash::constBegin() 和 QHash::constEnd

[noexcept] const_iterator::const_iterator(const QHash<Key, T>::iterator &other)

构建一个 other 的副本。

[noexcept] const Key &const_iterator::key() const

返回当前项的键。

另请参阅:value()。

[noexcept] const T &const_iterator::value() const

返回当前项的值。

另请参阅:key() 和 operator*()。

[noexcept] bool const_iterator::operator!=(const QHash<Key, T>::const_iterator &other) const

如果 other 指向与该迭代器不同的项,则返回 true;否则返回 false

另请参阅:operator==()。

[noexcept] const T &const_iterator::operator*() const

返回当前项的值。

value 相同。

另请参阅:key()。

[noexcept] QHash<Key, T>::const_iterator &const_iterator::operator++()

前缀++运算符 (++i) 将迭代器前进到哈希中的下一个项,并返回一个指向新当前项的迭代器。

QHash::end() 上调用此函数会导致未定义的结果。

[noexcept] QHash<Key, T>::const_iterator const_iterator::operator++(int)

这是一个重载的函数。

后缀++运算符(i++)将迭代器移动到哈希表中的下一个项,并返回对先前当前项的迭代器。

[noexcept] const T *const_iterator::operator->() const

返回当前项值的指针。

另请参阅:value()。

[noexcept] bool const_iterator::operator==(const QHash<Key, T>::const_iterator &other) const

如果other指向与该迭代器相同的项,则返回true;否则返回false

另请参阅 operator!=

© 2024 Qt公司。此处包含的文档贡献是各自所有者的版权。提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款许可的。Qt及其标志是芬兰以及全球其他地区的Qt公司的商标。所有其他标志都是其各自所有者的财产。