const_iterator 类

QMultiHash::const_iterator

QMultiHash::const_iterator 类提供了一个 STL 样式的 const 迭代器,用于 QMultiHash。详情...

公开函数

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

详细描述

QMultiHash<Key, T>::const_iterator 允许您遍历一个 QMultiHash。如果您需要在遍历时修改 QMultiHash,则必须使用 QMultiHash::iterator。通常,如果您不需要通过迭代器修改 QMultiHash,最好使用 QMultiHash::const_iterator。const 迭代器略快,且可以改善代码可读性。

默认的 QMultiHash::const_iterator 构造函数创建一个未初始化的迭代器。您必须使用 QMultiHash 函数如 QMultiHash::cbegin()、QMultiHash::cend() 或 QMultiHash::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;

与按键排序项的 QMap 不同,QMultiHash 以任意顺序存储其项。唯一保证的是,具有相同键的项(因为这些项都是通过 QMultiHash 插入的)将连续出现,从最近插入的值到最久插入的值。

可以在同一哈希上使用多个迭代器。但是,请注意,对 QMultiHash(插入和删除项)进行的任何直接修改都可能导致迭代器变得无效。

将项目插入散列表或调用如QMultiHash::reserve()或QMultiHash::squeeze()之类的函数会使指向散列表的所有迭代器失效。只要QMultiHash不需要增长/缩小其内部散列表,迭代器才会保证有效。在重新散列操作发生后使用任何迭代器将导致未定义的行为。

如果您需要长期保留迭代器,我们建议您使用QMultiMap而不是QMultiHash

警告:隐式共享容器上的迭代器不与STL迭代器完全一样。当迭代器正在该容器上激活时,您应该避免在复制容器。更多信息,请阅读隐式共享迭代器问题

另请参阅 QMultiHash::iteratorQMultiHash::key_iteratorQMultiHash::const_key_value_iterator

成员函数文档

[constexpr noexcept] const_iterator::const_iterator()

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

不要在未初始化的迭代器上调用如key()、value()和operator++()等函数。在使用它之前,请使用operator=()将其分配值。

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

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

构建其他值的副本。

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

返回当前项目的键。

另请参阅 value()。

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

返回当前项目的值。

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

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

如果other指向此迭代器不同于的项目则返回true;否则返回false

另请参阅 operator==()。

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

返回当前项目的值。

value相同。

另请参阅 key()。

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

前缀++运算符(++i)将迭代器推进散列表中的下一个项目,并返回对新当前项目的迭代器。

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

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

这是一个重载函数。

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

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

返回当前项值的指针。

另请参阅 value()。

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

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

另请参阅operator!=

© 2024 The Qt Company Ltd. 本文档的贡献均属于各自所有者的版权。本文档的提供受GNU自由文档许可证版本1.3的条款限制,该许可证由自由软件基金会发布。Qt及其相应标志是The Qt Company Ltd.在芬兰和/或其他国家的商标。所有其他商标均归其各自所有者所有。