const_iterator 类

class QMultiMap::const_iterator

QMultiMap::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_iteratoroperator++(int)
QMultiMap<Key, T>::const_iterator &operator--()
QMultiMap<Key, T>::const_iteratoroperator--(int)
const T *operator->() const
booloperator!=(const QMultiMap<Key, T>::const_iterator &lhs, const QMultiMap<Key, T>::const_iterator &rhs)
booloperator==(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::iteratorQMultiMap::key_iteratorQMultiMap::const_key_value_iterator

成员类型文档

[alias]const_iterator::iterator_category

std::bidirectional_iterator_tag的同义词,表示此迭代器是双向迭代器。

成员函数文档

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

返回当前项目的值。

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

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. 在芬兰以及/或全球其他国家的商标。所有其他商标均为其各自所有者的财产。