Spec-Zone.ru › Qt 5.6

Класс 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)
  • 45 публичных функций унаследовано от QHash

Подробное описание

Класс 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().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qmultihash.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API