const_iterator 类
类 QMap::const_iteratorQMap::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_iterator | operator++(int) |
QMap<Key, T>::const_iterator & | operator--() |
QMap<Key, T>::const_iterator | operator--(int) |
const T * | operator->() const |
相关非成员
bool | operator!=(const QMap<Key, T>::const_iterator &lhs, const QMap<Key, T>::const_iterator &rhs) |
bool | operator==(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() 达到相同行为的示例:
与按任意顺序存储其项的 QHash 不同,QMap 则根据键的顺序存储其项。
同一映射中可以使用多个迭代器。如果向映射中添加项目,现有的迭代器将保持有效。如果从映射中删除项目,指向已删除项目的迭代器将成为悬空迭代器。
警告:隐式共享容器上的迭代器并不完全像STL迭代器那样工作。在容器上的迭代器活动时,应避免复制容器。有关更多信息,请参阅隐式共享迭代器问题。
参阅:QMap::iterator,QMap::key_iterator和QMap::const_key_value_iterator。
成员函数文档
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
返回当前项的值。
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及其标志是全球范围内芬兰和/或其他国家的商标。所有其他商标均为各自所有者的财产。