const_iterator 类
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::const_iterator 也是一个好习惯,除非您需要通过迭代器更改 QMultiMap。常量迭代器稍微快一些,可以提高代码的可读性。
QMultiMap::const_iterator 的默认构造函数创建了一个未初始化的迭代器。在您开始遍历之前,您必须使用如 QMultiMap::cbegin(),QMultiMap::cend,或 QMultiMap::constFind() 这样的 QMultiMap 功能对其进行初始化。以下是一个典型循环,它会打印存储在映射中的所有(键,值)对
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按键顺序存储其项目。具有相同键的项目将连续出现,从最近插入的值到最远插入的值。
可以在同一个多映射上使用多个迭代器。如果您向映射中添加项,现有迭代器将保持有效。如果您从映射中删除项,指向已删除项的迭代器将成为悬空迭代器。
警告:隐式共享容器上的迭代器的工作方式与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)
构建其他的一个副本。
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++
)将迭代器推进到映射中的下一个项目,并返回对先前当前项目的迭代器。
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==。
© 2024 The Qt Company Ltd. 本文件所包含的文档贡献者是各自版权的所有者。本文件的文档是在 GNU Free Documentation License 版本 1.3 的条款下发布的,由 Free Software Foundation 发布。Qt 及相关标志是 The Qt Company Ltd. 在芬兰以及/或全球其他国家的商标。所有其他商标均为其各自所有者的财产。