const_iterator 类

QMap::const_iterator

QMap::const_iterator 类提供了一个针对 QMap 的 STL 风格的常量迭代器。点击查看更多...

公共类型

公共函数

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

详细描述

QMap<Key, T>::const_iterator 允许您遍历 QMap。如果您在遍历时需要修改 QMap,则必须使用 QMap::iterator 而不是 QMap::const_iterator。一般来说,在非常量 QMap 上使用 QMap::const_iterator 也是一种好的实践,除非您需要通过迭代器来修改 QMap。常量迭代器略快,并且可以提高代码的可读性。

默认的 QMap::const_iterator 构造函数创建了一个未初始化的迭代器。在您开始迭代之前,您必须使用例如 QMap::cbegin()、QMap::cend() 或 QMap::constFind() 这样的 QMap 函数来初始化它。以下是一个典型的循环,用于打印在地图中存储的所有(键,值)对:

QMap<QString, int> map;
map.insert("January", 1);
map.insert("February", 2);
...
map.insert("December", 12);

for (auto i = map.cbegin(), end = map.cend(); i != end; ++i)
    cout << qPrintable(i.key()) << ": " << i.value() << endl;

以下是一个示例,用于删除所有值大于 10 的项:

QMap<QString, int>::const_iterator i = map.cbegin();
while (i != map.cend()) {
    if (i.value() > 10)
        i = map.erase(i);
    else
        ++i;
}

以下是使用 erase_if() 达到相同行为的示例:

erase_if(map, [](const QMap<QString, int>::iterator it) { return it.value() > 10; });

与按任意顺序存储其项的 QHash 不同,QMap 则根据键的顺序存储其项。

同一映射中可以使用多个迭代器。如果向映射中添加项目,现有的迭代器将保持有效。如果从映射中删除项目,指向已删除项目的迭代器将成为悬空迭代器。

警告:隐式共享容器上的迭代器并不完全像STL迭代器那样工作。在容器上的迭代器活动时,应避免复制容器。有关更多信息,请参阅隐式共享迭代器问题

参阅:QMap::iteratorQMap::key_iteratorQMap::const_key_value_iterator

成员类型文档

[别名] const_iterator::iterator_category

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

成员函数文档

const_iterator::const_iterator()

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

在未初始化的迭代器上不得调用诸如key()、value和operator++()之类的函数。在使用之前,使用operator=()分配一个值给它。

参阅:QMap::constBegin()和QMap::constEnd()。

const_iterator::const_iterator(const QMap<Key, T>::iterator &other)

构造了other的副本。

const Key &const_iterator::key() const

返回当前项的键。

参阅:value()。

const T &const_iterator::value() const

返回当前项的值。

参阅:key()和operator*()。

const T &const_iterator::operator*() const

返回当前项的值。

value相同。

Refer to:key()。

QMap<Key, T>::const_iterator &const_iterator::operator++()

前缀++运算符(例如,++i)将迭代器向前移动到映射中的下一个项目,并返回一个指向新当前项的迭代器。

QMap::end()上调用此函数会得到未定义的结果。

参阅:operator--()。

QMap<Key, T>::const_iterator const_iterator::operator++(int)

这是一个重载函数。

后缀++运算符(例如,i++)将迭代器向前移动到映射中的下一个项目,并返回一个指向先前当前项的迭代器。

QMap<Key, T>::const_iterator &const_iterator::operator--()

前缀--运算符(例如,--i)使前一个项目成为当前项,并返回一个指向新当前项的迭代器。

QMap::begin()上调用此函数会得到未定义的结果。

参阅:operator++()。

QMap<Key, T>::const_iterator const_iterator::operator--(int)

这是一个重载函数。

后缀 -- 运算符 (i--) 使前面的项目成为当前项目,并返回一个指向先前当前项的迭代器。

const T *const_iterator::operator->() const

返回当前项值的指针。

参阅:value()。

相关非成员

bool operator==(const QMap<Key, T>::const_iterator &lhs, const QMap<Key, T>::const_iterator &rhs)

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

另请参阅 运算符!=

bool operator!=(const QMap<Key, T>::const_iterator &lhs, const QMap<Key, T>::const_iterator &rhs)

如果 lhs 指向与 rhs 迭代器不同的项,则返回 true;否则返回 false

另请参阅 运算符==

© 2024 Qt公司有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的 GNU自由文档许可版1.3 的条款进行许可的。Qt及其标志是全球范围内芬兰和/或其他国家的商标。所有其他商标均为各自所有者的财产。