Spec-Zone.ru › Qt 5.12

Класс QMultiMap

Класс QMultiMap — это удобный подкласс QMap, предоставляющий многозначные отображения. Подробнее...

Заголовок: #include <QMultiMap>
qmake: QT += core
Наследует: QMap
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются перевходными.

Открытые функции

QMultiMap()
QMultiMap(std::initializer_list<std::pair<Key, T> > list)
QMultiMap(const QMap<Key, T> &other)
QMultiMap(QMap<Key, T> &&other)
typename QMap<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 QMap<Key, T>::iterator find(const Key &key, const T &value)
typename QMap<Key, T>::const_iterator find(const Key &key, const T &value) const
typename QMap<Key, T>::iterator insert(const Key &key, const T &value)
typename QMap<Key, T>::iterator insert(typename QMap<Key, T>::const_iterator pos, const Key &key, const T &value)
int remove(const Key &key, const T &value)
typename QMap<Key, T>::iterator replace(const Key &key, const T &value)
void swap(QMultiMap<Key, T> &other)
QMultiMap<K, V> operator+(const QMultiMap<K, V> &other) const
QMultiMap<K, V> & operator+=(const QMultiMap<K, V> &other)
  • 61 открытых функций унаследовано от QMap

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

Класс QMultiMap — это удобный подкласс QMap, предоставляющий многозначные отображения.

QMultiMap<Ключ, Тип> — один из универсальных классов контейнеров Qt. Он наследует QMap и расширяет его несколькими удобными функциями, делающими его более подходящим, чем QMap, для хранения многозначных отображений. Многозначное отображение — это отображение, допускающее несколько значений с одним ключом; QMap обычно этого не позволяет, если вы не вызываете QMap::insertMulti().

Поскольку QMultiMap наследует QMap, вся функциональность QMap также применима к QMultiMap. Например, вы можете использовать isEmpty() для проверки того, пусто ли отображение, и вы можете перебирать QMultiMap с помощью итераторов QMap (например, QMapIterator). Но помимо этого, он предоставляет функцию insert(), которая соответствует QMap::insertMulti(), и функцию replace(), которая соответствует QMap::insert(). Он также предоставляет удобные операторы +() и +=().

Пример:

QMultiMap<QString, int> map1, map2, map3;

map1.insert("plenty", 100);
map1.insert("plenty", 2000);
// map1.size() == 2

map2.insert("plenty", 5000);
// map2.size() == 1

map3 = map1 + map2;
// map3.size() == 3

В отличие от QMap, QMultiMap не предоставляет оператора []. Используйте value() или replace(), если вы хотите получить доступ к последнему вставленному элементу с определенным ключом.

Если вы хотите получить все значения для одного ключа, вы можете использовать values(const Key &key), которая возвращает QList<Тип>:

QList<int> values = map.values("plenty");
for (int i = 0; i < values.size(); ++i)
    cout << values.at(i) << endl;

Элементы с одинаковым ключом доступны от последнего к первому вставленному.

Если вы предпочитаете итераторы в стиле STL, вы можете вызвать find() для получения итератора для первого элемента с ключом и итерировать оттуда:

QMultiMap<QString, int>::iterator i = map.find("plenty");
while (i != map.end() && i.key() == "plenty") {
    cout << i.value() << endl;
    ++i;
}

Типы ключей и значений QMultiMap должны быть присваиваемыми типами данных. Это охватывает большинство типов данных, которые вы можете встретить, но компилятор не позволит вам, например, хранить QWidget в качестве значения; вместо этого храните QWidget *. Кроме того, тип ключа QMultiMap должен поддерживать оператор <(). Подробности см. в документации по QMap.

См. также QMap, QMapIterator, QMutableMapIterator и QMultiHash.

Документация по членам функций

QMultiMap::QMultiMap()

Создает пустое отображение.

QMultiMap::QMultiMap(std::initializer_list<std::pair<Ключ, Тип> > list)

Создает многозначное отображение с копией каждого из элементов в списке инициализации list.

Эта функция доступна только при компиляции программы в режиме C++11.

Эта функция была представлена в Qt 5.1.

QMultiMap::QMultiMap(const QMap<Ключ, Тип> &other)

Создает копию other (которая может быть QMap или QMultiMap).

См. также operator=().

QMultiMap::QMultiMap(QMap<Ключ, Тип> &&other)

Создает экземпляр QMultiMap по умолчанию.

typename QMap<Ключ, Тип>::const_iterator QMultiMap::constFind(const Ключ &key, const Тип &value) const

Возвращает итератор, указывающий на элемент с ключом key и значением value в отображении.

Если в отображении нет такого элемента, функция возвращает constEnd().

Эта функция была представлена в Qt 4.3.

См. также QMap::constFind().

bool QMultiMap::contains(const Ключ &key, const Тип &value) const

Возвращает true , если отображение содержит элемент с ключом key и значением value; в противном случае возвращает false.

Эта функция была представлена в Qt 4.3.

См. также QMap::contains().

int QMultiMap::count(const Ключ &key, const Тип &value) const

Возвращает количество элементов с ключом key и значением value.

Эта функция была представлена в Qt 4.3.

См. также QMap::count().

typename QMap<Ключ, Тип>::iterator QMultiMap::find(const Ключ &key, const Тип &value)

Возвращает итератор, указывающий на элемент с ключом key и значением value в отображении.

Если в отображении нет такого элемента, функция возвращает end().

Если отображение содержит несколько элементов с ключом key, эта функция возвращает итератор, указывающий на последнее вставленное значение.

Эта функция была представлена в Qt 4.3.

См. также QMap::find().

typename QMap<Ключ, Тип>::const_iterator QMultiMap::find(const Ключ &key, const Тип &value) const

Это перегруженная функция.

Возвращает константный итератор, указывающий на элемент с заданным ключом и значением в отображении.

Если в отображении нет такого элемента, функция возвращает end().

Если карта содержит несколько элементов с указанным ключом, эта функция возвращает константный итератор, указывающий на значение, добавленное последним.

Эта функция была введена в Qt 4.3.

См. также QMap::find().

typename QMap<Key, T>::iterator QMultiMap::insert(const Key &key, const T &value)

Вставляет новый элемент с ключом key и значением value.

Если в карте уже есть элемент с таким же ключом, эта функция просто создаст новый. (Это поведение отличается от replace(), которое перезаписывает значение существующего элемента.)

См. также replace().

typename QMap<Key, T>::iterator QMultiMap::insert(typename QMap<Key, T>::const_iterator pos, const Key &key, const T &value)

Вставляет новый элемент с ключом key и значением value, используя подсказку pos, указывающую, где выполнить вставку.

Если в качестве подсказки используется constBegin(), это означает, что key меньше любого ключа в карте, а constEnd() — что key больше любого ключа в карте. В противном случае подсказка должна удовлетворять условию (pos - 1).key() < key <= pos.key(). Если подсказка pos неверна, она игнорируется, и выполняется обычная вставка.

Если в карте уже есть элемент с таким же ключом, эта функция просто создаст новый.

Примечание: Будьте внимательны с подсказкой. Предоставление итератора из более старой общей инстанции может привести к сбою, но также существует риск, что это незаметно повредит как карту, так и карту pos.

Эта функция была введена в Qt 5.1.

int QMultiMap::remove(const Key &key, const T &value)

Удаляет все элементы, имеющие ключ key и значение value из карты. Возвращает количество удалённых элементов.

Эта функция была введена в Qt 4.3.

См. также QMap::remove().

typename QMap<Key, T>::iterator QMultiMap::replace(const Key &key, const T &value)

Вставляет новый элемент с ключом key и значением value.

Если в карте уже есть элемент с ключом key, значение этого элемента заменяется на value.

Если есть несколько элементов с ключом key, значение элемента, добавленного последним, заменяется на value.

См. также insert().

void QMultiMap::swap(QMultiMap<Key, T> &other)

Меняет местами карту other с этой картой. Эта операция очень быстрая и никогда не терпит неудачу.

Эта функция была введена в Qt 4.8.

QMultiMap<K, V> QMultiMap::operator+(const QMultiMap<K, V> &other) const

Возвращает карту, содержащую все элементы этой карты в дополнение ко всем элементам в other. Если ключ общий для обеих карт, результирующая карта будет содержать ключ несколько раз.

См. также operator+=().

QMultiMap<K, V> &QMultiMap::operator+=(const QMultiMap<K, V> &other)

Вставляет все элементы из карты other в эту карту и возвращает ссылку на эту карту.

См. также insert() и operator+().

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

Spec-Zone.ru

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