const_iterator 类
类 QMultiHash::const_iteratorQMultiHash::const_iterator 类提供了一个 STL 样式的 const 迭代器,用于 QMultiHash。详情...
公开函数
const_iterator() | |
const_iterator(const QMultiHash<Key, T>::iterator &other) | |
const Key & | key() const |
T & | value() const |
bool | operator!=(const QMultiHash<Key, T>::const_iterator &other) const |
T & | operator*() const |
QMultiHash<Key, T>::const_iterator & | operator++() |
QMultiHash<Key, T>::const_iterator | operator++(int) |
T * | operator->() const |
bool | operator==(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::iterator、QMultiHash::key_iterator和QMultiHash::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
返回当前项目的值。
[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.在芬兰和/或其他国家的商标。所有其他商标均归其各自所有者所有。