key_iterator 类
类 QMultiMap::key_iteratorQMultiMap::key_iterator 类提供了一个 STL 风格的 const 迭代器用于 QMultiMap 的键。更多...
公共函数
QMultiMap | base() const |
bool | operator!=(QMultiMap |
const Key & | operator*() const |
QMultiMap | operator++() |
QMultiMap | operator++(int) |
QMultiMap | operator--() |
QMultiMap | operator--(int) |
const Key * | operator->() const |
bool | operator==(QMultiMap |
详细描述
QMultiMap::key_iterator 实质上与 QMultiMap::const_iterator 相同,区别在于 operator*() 和 operator->() 返回的是一个键而不是值。
对于大多数使用情况,应使用 QMultiMap::iterator 和 QMultiMap::const_iterator,您可以通过调用 QMultiMap::iterator::key() 容易地访问键。
for (auto it = multimap.cbegin(), end = multimap.cend(); it != end; ++it) { cout << "The key: " << it.key() << endl cout << "The value: " << qPrintable(it.value()) << endl; cout << "Also the value: " << qPrintable(*it) << endl; }
但是,为了在 QMultiMap 的键和 STL 风格算法之间实现互操作性,我们需要一个迭代器,它的地址是键而不是值。使用 QMultiMap::key_iterator,我们可以将算法应用于键的范围,而无需调用 QMultiMap::keys(),这效率低下,因为它需要一次 QMultiMap 迭代以及内存分配来创建一个临时的 QList。
// Inefficient, keys() is expensive QList<int> keys = multimap.keys(); int numPrimes = std::count_if(multimap.cbegin(), multimap.cend(), isPrimeNumber); qDeleteAll(multimap2.keys()); // Efficient, no memory allocation needed int numPrimes = std::count_if(multimap.keyBegin(), multimap.keyEnd(), isPrimeNumber); qDeleteAll(multimap2.keyBegin(), multimap2.keyEnd());
QMultiMap::key_iterator 是 const 的,无法修改键。
默认的 QMultiMap::key_iterator 构造函数创建了一个未初始化的迭代器。您必须使用 QMultiMap 函数(如 QMultiMap::keyBegin() 或 QMultiMap::keyEnd())来对其进行初始化。
警告:隐式共享容器上的迭代器并不像 STL 迭代器那样工作。您应在活动迭代器所在的容器上进行复制时避免复制容器。有关更多信息,请参阅 隐式共享迭代器问题。
参见 QMultiMap::const_iterator 和 QMultiMap::iterator。
成员函数文档
QMultiMap<Key, T>::const_iterator key_iterator::base() const
返回此 key_iterator 所基于的基本 const_iterator。
bool key_iterator::operator!=(QMultiMap<Key, T>::key_iterator other) const
如果 other 指向此迭代器不同的项目,则返回 true
;否则返回 false
。
参见 operator==。
const Key &key_iterator::operator*() const
返回当前项目的键。
QMultiMap<Key, T>::key_iterator &key_iterator::operator++()
前缀 ++
操作符 (++i
) 将迭代器前进到哈希表中的下一个项目,并返回新当前项的迭代器。
在 QMultiMap::keyEnd() 上调用此函数会导致未定义结果。
参见 operator--。
QMultiMap<Key, T>::key_iterator key_iterator::operator++(int)
这是一个重载函数。
后缀 ++
操作符 (i++
) 将迭代器前进到哈希表中的下一个项目,并返回前一个项的迭代器。
QMultiMap<Key, T>::key_iterator &key_iterator::operator--()
前缀 --
操作符 (--i
) 使前一项成为当前项,并返回指向新当前项的迭代器。
在 QMultiMap::keyBegin() 上调用此函数会导致未定义结果。
参见 operator++。
QMultiMap<Key, T>::key_iterator key_iterator::operator--(int)
这是一个重载函数。
后缀 --
操作符 (i--
) 使前一项成为当前项,并返回指向前一项的迭代器。
const Key *key_iterator::operator->() const
返回指向当前项目键的指针。
bool key_iterator::operator==(QMultiMap<Key, T>::key_iterator other) const
如果 other 指向与此迭代器相同的项,则返回 true
;否则返回 false
。
另请参阅 运算符!=。
© 2024 The Qt Company Ltd。本文件中包含的文档贡献归各自所有者版权所有。本文件中提供的文件受自由软件基金会的发布的GNU自由文档许可证(版本 1.3)的条款许可。Qt及其相关标志是芬兰和/或其他国家/地区的The Qt Company Ltd的商标。所有其他商标均为其各自所有者的财产。