QMultiMap::const_iterator Class
class QMultiMap::const_iteratorQMultiMap::const_iterator 类为QMultiMap 提供了 STL 风格的常量迭代器。更多
公共类型
公共函数
const_iterator() | |
const_iterator(const QMultiMap<Key, T>::iterator &other) | |
const Key & | key() const |
const T & | value() const |
const T & | operator*() const |
QMultiMap<Key, T>::const_iterator & | operator++() |
QMultiMap<Key, T>::const_iterator | operator++(int) |
QMultiMap<Key, T>::const_iterator & | operator--() |
QMultiMap<Key, T>::const_iterator | operator--(int) |
const T * | operator->() const |
相关非成员
bool | operator!=(const QMultiMap<Key, T>::const_iterator &lhs, const QMultiMap<Key, T>::const_iterator &rhs) |
bool | operator==(const QMultiMap<Key, T>::const_iterator &lhs, const QMultiMap<Key, T>::const_iterator &rhs) |
详细描述
QMultiMap<Key, T>::const_iterator 允许您遍历QMultiMap 。如果您想在遍历过程中修改QMultiMap ,则必须使用QMultiMap::iterator 代替。一般来说,除非需要通过迭代器修改QMultiMap ,否则在非常数QMultiMap 上使用QMultiMap::const_iterator 也是不错的做法。常量迭代器速度稍快,而且可以提高代码的可读性。
默认的QMultiMap::const_iterator 构造函数会创建一个未初始化的迭代器。在开始迭代之前,必须使用QMultiMap 函数(如QMultiMap::cbegin()、QMultiMap::cend() 或QMultiMap::constFind() )对其进行初始化。下面是一个典型的循环,用于打印存储在 map 中的所有(键、值)对:
QMultiMap<QString, int> multi; multimap.insert("January", 1); multimap.insert("February", 2); ... multimap.insert("December", 12); for (auto i = multimap.cbegin(), end = multimap.cend(); i != end; ++i) cout << qPrintable(i.key()) << ": " << i.value() << endl;
下面是一个删除所有值大于 10 的项的示例:
QMultiMap<QString, int>::const_iterator i = multimap.cbegin(); while (i != multimap.cend()) { if (i.value() > 10) i = multimap.erase(i); else ++i; }
QMultiHash 是按任意顺序存储项目的,而QMultiMap 则不同,它是按 key 排序的。共享相同键值的项目将从最近插入的值到最近插入的值依次出现。
多个迭代器可用于同一个多映射。如果向地图中添加项目,现有的迭代器将保持有效。如果从映射中删除项目,指向被删除项目的迭代器将成为悬空迭代器。
警告: 隐式共享容器上的迭代器与 STL-迭代器的工作方式并不完全相同。当容器上的迭代器处于活动状态时,应避免复制该容器。更多信息,请阅读隐式共享迭代器问题。
另请参见 QMultiMap::iterator,QMultiMap::key_iterator, 和QMultiMap::const_key_value_iterator 。
成员函数文档
const_iterator::const_iterator()
构造一个未初始化的迭代器。
不得在未初始化的迭代器上调用key(),value() 和 operator++() 等函数。在使用迭代器之前,请使用 operator=() 为其赋值。
另请参阅 QMultiMap::constBegin() 和QMultiMap::constEnd()。
const_iterator::const_iterator(const QMultiMap<Key, T>::iterator &other)
构造other 的副本。
const Key &const_iterator::key() const
返回当前项目的密钥。
另请参阅 value()。
const T &const_iterator::value() const
返回当前项目的值。
const T &const_iterator::operator*() const
返回当前项目的值。
与value() 相同。
另请参阅 key()。
QMultiMap<Key, T>::const_iterator &const_iterator::operator++()
前缀++
操作符 (++i
) 将迭代器前进到映射中的下一个项,并返回一个指向新的当前项的迭代器。
在QMultiMap::end() 上调用此函数会导致未定义的结果。
另请参见 operator--()。
QMultiMap<Key, T>::const_iterator const_iterator::operator++(int)
这是一个重载函数。
后缀++
运算符 (i++
) 将迭代器前进到 map 中的下一个项目,并返回一个指向先前当前项目的迭代器。
QMultiMap<Key, T>::const_iterator &const_iterator::operator--()
前缀--
操作符 (--i
) 使前一个项目成为当前项目,并返回一个指向新的当前项目的迭代器。
在QMultiMap::begin() 上调用此函数会导致未定义的结果。
另请参见 operator++()。
QMultiMap<Key, T>::const_iterator const_iterator::operator--(int)
这是一个重载函数。
后缀--
运算符 (i--
) 使前一个项目成为当前项目,并返回一个指向前一个当前项目的迭代器。
const T *const_iterator::operator->() const
返回指向当前项目值的指针。
另请参阅 value()。
相关非成员
bool operator==(const QMultiMap<Key, T>::const_iterator &lhs, const QMultiMap<Key, T>::const_iterator &rhs)
如果lhs 指向与rhs 迭代器相同的项目,则返回true
;否则返回false
。
另请参阅 operator!=() 。
bool operator!=(const QMultiMap<Key, T>::const_iterator &lhs, const QMultiMap<Key, T>::const_iterator &rhs)
如果lhs 指向与rhs 迭代器不同的项目,则返回true
;否则返回false
。
另请参阅 operator==() 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.