template <typename Key, typename T> class QMultiHash
QMultiHash 类是一个便利的 QHash 派生类,提供多值哈希表功能。更多内容...
头文件: | #include <QMultiHash> |
---|---|
qmake: | QT += core |
基类: | QHash |
注意: 该类中的所有函数都是可重入的。
QMultiHash(const QHash<Key, T> &other) | |
---|---|
QMultiHash(InputIterator begin, InputIterator end) | |
QMultiHash(std::initializer_list<std::pair<Key, T> > list) | |
QMultiHash() | |
typename QHash<Key, T>::const_iterator | constFind(const Key &key, const T &value) const |
bool | contains(const Key &key, const T &value) const |
int | count(const Key &key, const T &value) const |
typename QHash<Key, T>::iterator | find(const Key &key, const T &value) |
typename QHash<Key, T>::const_iterator | find(const Key &key, const T &value) const |
typename QHash<Key, T>::iterator | insert(const Key &key, const T &value) |
int | remove(const Key &key, const T &value) |
typename QHash<Key, T>::iterator | replace(const Key &key, const T &value) |
void | swap(QMultiHash<K, V> &other) |
QList<Key> | uniqueKeys() const |
QMultiHash<K, V> & | unite(const QMultiHash<K, V> &other) |
QList<T> | values(const Key &key) const |
QMultiHash<K, V> | operator+(const QMultiHash<K, V> &other) const |
QMultiHash<K, V> & | operator+=(const QMultiHash<K, V> &other) |
uint | qHash(const QMultiHash<Key, T> &key, uint seed = 0) |
---|---|
QMultiHash<Key, T> 是一种 Qt 泛型容器类。它继承 QHash 并扩展了一些便利的功能,使之比 QHash 更适合存储多值哈希。多值哈希是一种允许将多个值关联到同一个键的哈希。
因为 QMultiHash 继承 QHash,所有 QHash 的功能也适用于 QMultiHash。例如,可以使用 isEmpty() 测试哈希表是否为空,可以使用 QHash 的迭代器类(例如 QHashIterator)遍历 QMultiHash。但是与 QHash 不同,QMultiHash 提供的 insert() 函数允许同一个键插入多个元素。而 replace() 函数对应于 QHash::insert()。此外,该类还提供便利的 operator+() 和 operator+=() 运算符。
与 QMultiMap 不同,QMultiHash 不对插入的元素排序。唯一的保证是共享同一键的元素将按照从最新到最早插入的顺序连续出现。
例子:
QMultiHash<QString, int> hash1, hash2, hash3;
hash1.insert("plenty", 100);
hash1.insert("plenty", 2000);
// hash1.size() == 2
hash2.insert("plenty", 5000);
// hash2.size() == 1
hash3 = hash1 + hash2;
// hash3.size() == 3
与 QHash 不同,QMultiHash 不提供 operator[] 运算符。如果想用特定键访问最新插入的元素,使用 value() 或 replace()。
如果想取得单个键关联的所有值,可以使用 values(const Key &key),该函数返回一个 QList:
QList<int> values = hash.values("plenty");
for (int i = 0; i < values.size(); ++i)
cout << values.at(i) << Qt::endl;
共享同一键的元素按照从最新到最早插入的顺序返回。
更有效的方法是传递键调用 find() 取得第一个元素的 STL 风格迭代器,从该元素开始遍历:
QMultiHash<QString, int>::iterator i = hash.find("plenty");
while (i != hash.end() && i.key() == "plenty") {
cout << i.value() << Qt::endl;
++i;
}
QMultiHash 键和值的数据类型必须是可赋值数据类型。不能存储类似 QWidget 这样的对象作为值;应该存储 QWidget *。另外,QMultiHash 的键类型必须提供 operator==() 运算符, 并且在键类型的命名空间内还必须有一个为键类型参数返回哈希值的 qHash() 函数。具体请参考 QHash 文档。
另请参阅 QHash,QHashIterator,QMutableHashIterator 和 QMultiMap。
构造一个 other 的副本(可能是一个 QHash 或 QMultiHash)。
另请参阅 operator=()。
用迭代器范围 [begin, end) 内每个元素的副本构造一个多值哈希表。需要满足下列两个条件之一:迭代范围内的元素是包含 first
和 second
数据成员的对象(像 QPair
,std::pair
等),分别可以转换为 Key
类型和 T
类型;或者迭代器必须含有 key()
和 value()
成员函数,分别返回可以转换为 Key
类型的键 T
类型的值。
Qt 5.14 中引入该函数。
用初始化列表 list 中每个元素的副本构造一个哈希表。
只有当程序在 C++11 模式下编译时,该函数才可用。
Qt 5.1 中引入该函数。
构造一个空哈希表。
返回迭代器,指向哈希表中键为 key,值为 value 的元素。
如果哈希表中不包含这样的元素,该函数返回 constEnd()。
Qt 4.3 中引入该函数。
另请参阅 QHash::constFind().
如果该哈希表包含键为 key,值为 value 的元素,返回 true
;否则返回 false
。
Qt 4.3 中引入该函数。
另请参阅 QHash::contains().
返回键为 key,值为 value 的元素个数。
Qt 4.3 中引入该函数。
另请参阅 QHash::count().
返回迭代器,指向键为 key,值为 value 的元素。如果哈希表中不包含这样的元素,该函数返回 end()。
如果哈希表包含多个键为 key,值为 value 的元素,迭代器指向最新插入的元素。
Qt 4.3 中引入该函数。
另请参阅 QHash::find().
这是一个重载函数。
Qt 4.3 中引入该函数。
用键 key 和值 value 插入一个新元素。
如果哈希表中已经存在相同键的元素,该函数将创建一个新元素。(这与 replace() 不同,replace() 是覆盖已经存在元素的值。)
另请参阅 replace()。
从哈希表中移除所有键为 key,值为 value 的元素。返回被移除元素的个数。
Qt 4.3 中引入该函数。
另请参阅 QHash::remove()。
用键 key 和值 value 插入一个新元素。
如果已经存在键为 key 的元素,该元素的值将被 value 替换。
如果有多个键为 key 的元素,最新插入的元素的值将被 value 替换。
另请参阅 insert()。
将 other 哈希表与本哈希表。该操作非常快,永远不失败。
Qt 4.8 中引入该函数。
以升序返回哈希表中所有键的列表。在哈希表中多次出现的键在返回的列表中只出现一次。
Qt 5.13 中引入该函数。
将 other 哈希表中的所有元素插入到本哈希表中,返回本哈希表的引用。
Qt 5.13 中引入该函数。
另请参阅 insert()。
这是一个重载函数。
按照从最新到最早插入的顺序,返回所有与键 key 相关联的值的列表。
返回一个哈希表,该哈希表包含本哈希表和 other 哈希表中的所有元素。如果一个键在两个哈希表中同时存在,结果哈希表将多次包含这个键。
另请参阅 operator+=()。
将 other 哈希表中的所有元素插入到本哈希表中,返回本哈希表的引用。
返回 key 的哈希值,使用 seed 来随机化计算结果。
类型 T
必须被 qHash() 支持。
Qt 5.8 中引入该函数。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )