key_iterator 类

QMultiMap::key_iterator

QMultiMap::key_iterator 类提供了一个 STL 风格的 const 迭代器用于 QMultiMap 的键。更多...

公共函数

QMultiMap::const_iteratorbase() const
booloperator!=(QMultiMap::key_iterator other) const
const Key &operator*() const
QMultiMap::key_iterator &operator++()
QMultiMap::key_iteratoroperator++(int)
QMultiMap::key_iterator &operator--()
QMultiMap::key_iteratoroperator--(int)
const Key *operator->() const
booloperator==(QMultiMap::key_iterator other) const

详细描述

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_iteratorQMultiMap::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的商标。所有其他商标均为其各自所有者的财产。