Класс QMultiHash
Класс QMultiHash — это вспомогательный подкласс QHash, предоставляющий хеши с множественными значениями. Подробнее...
| Заголовок: | #include <QMultiHash> |
| qmake: | QT += core |
| Наследует: | QHash |
Примечание: Все функции в этом классе являются реентерабельными.
Публичные функции
| QMultiHash() | |
| QMultiHash(std::initializer_list<std::pair<Key, T> > list) | |
| QMultiHash(const QHash<Key, T> &other) | |
| QMultiHash(QHash<Key, T> &&other) | |
| 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 |
| QHash<Key, T>::iterator | find(const Key &key, const T &value) |
| QHash<Key, T>::const_iterator | find(const Key &key, const T &value) const |
| QHash<Key, T>::iterator | insert(const Key &key, const T &value) |
| int | remove(const Key &key, const T &value) |
| QHash<Key, T>::iterator | replace(const Key &key, const T &value) |
| void | swap(QMultiHash &other) |
| QMultiHash | operator+(const QMultiHash &other) const |
| QMultiHash & | operator+=(const QMultiHash &other) |
- 48 публичных функций, унаследованных от QHash
Связанные нечлены
| uint | qHash(const QMultiHash<Key, T> &key, uint seed = 0) |
Подробное описание
Класс QMultiHash — это вспомогательный подкласс QHash, предоставляющий хеши с множественными значениями.
QMultiHash<Key, T> — один из универсальных классов контейнеров Qt. Он наследует QHash и расширяет его несколькими удобными функциями, которые делают его более подходящим для хранения хешей с множественными значениями, чем QHash. Хеш с множественными значениями — это хеш, который позволяет иметь несколько значений с одним ключом; QHash обычно этого не допускает, если вы не используете QHash::insertMulti().
Поскольку QMultiHash наследует QHash, все функциональные возможности QHash также применимы к QMultiHash. Например, вы можете использовать isEmpty(), чтобы проверить, пуст ли хеш, и вы можете пройти по QMultiHash с помощью итераторов QHash (например, QHashIterator). Но помимо этого, он предоставляет функцию insert(), которая соответствует QHash::insertMulti(), и функцию replace(), которая соответствует QHash::insert(). Он также предоставляет удобные операторы +() и +=().
Пример:
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 не предоставляет оператор []. Используйте value() или replace(), если вы хотите получить доступ к последнему вставленному элементу с определённым ключом.
Если вы хотите получить все значения для одного ключа, вы можете использовать values(const Key &key), которое возвращает QList<T>:
QList<int> values = hash.values("plenty");
for (int i = 0; i < values.size(); ++i)
cout << values.at(i) << endl; Элементы с одинаковым ключом доступны от последнего к первому вставленному.
Более эффективный подход — вызвать find(), чтобы получить итератор в стиле STL для первого элемента с ключом, и итерироваться оттуда:
QMultiHash<QString, int>::iterator i = hash.find("plenty");
while (i != hash.end() && i.key() == "plenty") {
cout << i.value() << endl;
++i;
} Типы данных ключа и значения QMultiHash должны быть типами данных, допускающими присваивание. Вы не можете, например, хранить QWidget в качестве значения; вместо этого храните QWidget *. Кроме того, тип ключа QMultiHash должен предоставлять оператор ==(), а также должна существовать функция qHash() в пространстве имён типа, которая возвращает значение хэша для аргумента типа ключа. Подробнее см. документацию по QHash.
См. также QHash, QHashIterator, QMutableHashIterator и QMultiMap.
Документация по функциям-членам
QMultiHash::QMultiHash()
Создаёт пустой хеш.
QMultiHash::QMultiHash(std::initializer_list<std::pair<Key, T> > list)
Создаёт многозначный хеш с копией каждого элемента в списке инициализации list.
Эта функция доступна только если программа компилируется в режиме C++11.
Эта функция была добавлена в Qt 5.1.
QMultiHash::QMultiHash(const QHash<Key, T> &other)
Создаёт копию other (которая может быть QHash или QMultiHash).
См. также operator=().
QMultiHash::QMultiHash(QHash<Key, T> &&other)
Создаёт экземпляр QMultiHash.
QHash<Key, T>::const_iterator QMultiHash::constFind(const Key &key, const T &value) const
Возвращает итератор, указывающий на элемент с заданным key и value в хеше.
Если такого элемента нет, функция возвращает constEnd().
Эта функция была добавлена в Qt 4.3.
См. также QHash::constFind().
bool QMultiHash::contains(const Key &key, const T &value) const
Возвращает true , если хеш содержит элемент с key и value; в противном случае возвращает false.
Эта функция была добавлена в Qt 4.3.
См. также QHash::contains().
int QMultiHash::count(const Key &key, const T &value) const
Возвращает количество элементов с заданным key и value.
Эта функция была добавлена в Qt 4.3.
См. также QHash::count().
QHash<Key, T>::iterator QMultiHash::find(const Key &key, const T &value)
Возвращает итератор, указывающий на элемент с заданным key и value. Если такого элемента нет, функция возвращает end().
Если хеш содержит несколько элементов с заданным key и value, возвращённый итератор указывает на последне вставленный элемент.
Эта функция была добавлена в Qt 4.3.
См. также QHash::find().
QHash<Key, T>::const_iterator QMultiHash::find(const Key &key, const T &value) const
Эта функция перегружена.
Эта функция была добавлена в Qt 4.3.
QHash<Key, T>::iterator QMultiHash::insert(const Key &key, const T &value)
Вставляет новую запись с ключом и значением значение.
Если в хэше уже есть запись с тем же ключом, эта функция просто создаст новую. (Это поведение отличается от replace(), которое перезаписывает значение существующей записи.)
См. также replace().
int QMultiHash::remove(const Key &key, const T &value)
Удаляет все записи с ключом и значением значение из хэша. Возвращает количество удалённых записей.
Эта функция была добавлена в Qt 4.3.
См. также QHash::remove().
QHash<Key, T>::iterator QMultiHash::replace(const Key &key, const T &value)
Вставляет новую запись с ключом и значением значение.
Если в хэше уже есть запись с ключом, значение этой записи заменяется на значение.
Если есть несколько записей с ключом, значение последней вставленной записи заменяется на значение.
См. также insert().
void QMultiHash::swap(QMultiHash &other)
Меняет местами хэш other с этим хэшем. Эта операция очень быстрая и никогда не терпит неудачи.
Эта функция была добавлена в Qt 4.8.
QMultiHash QMultiHash::operator+(const QMultiHash &other) const
Возвращает хэш, содержащий все записи из этого хэша в дополнение ко всем записям из other. Если ключ присутствует в обоих хэшах, в результирующем хэше ключ будет присутствовать несколько раз.
См. также operator+=().
QMultiHash &QMultiHash::operator+=(const QMultiHash &other)
Вставляет все записи из хэша other в этот хэш и возвращает ссылку на этот хэш.
См. также insert().
Связанные нечленные функции
uint qHash(const QMultiHash<Key, T> &key, uint seed = 0)
Возвращает значение хэша для ключа, используя seed для инициализации вычисления.
Тип T должен поддерживаться функцией qHash().
Эта функция была добавлена в Qt 5.8.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qmultihash.html