const_iterator 类
类 QHash::const_iteratorQHash::const_iterator 类提供了一个 STL 风格的 const 迭代器,用于 QHash。了解更多...
公共函数
const_iterator() | |
const_iterator(const QHash<Key, T>::iterator &other) | |
const Key & | key() const |
const T & | value() const |
bool | operator!=(const QHash<Key, T>::const_iterator &other) const |
const T & | operator*() const |
QHash<Key, T>::const_iterator & | operator++() |
QHash<Key, T>::const_iterator | operator++(int) |
const T * | operator->() const |
bool | operator==(const QHash<Key, T>::const_iterator &other) const |
详细描述
QHash
默认的 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::iterator,QHash::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
返回当前项的值。
[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公司的商标。所有其他标志都是其各自所有者的财产。