Класс QMultiMap
шаблон <typename Key, typename T> class QMultiMapКласс QMultiMap — это удобный подкласс QMap, который предоставляет отображения с множественными значениями. Подробнее...
| Заголовок: | #include <QMultiMap> |
| qmake: | QT += core |
| Наследует: | QMap |
Примечание: Все функции в этом классе являются перевходными.
Открытые функции
| QMultiMap(const QMap<Key, T> &other) | |
| QMultiMap(std::initializer_list<std::pair<Key, T> > list) | |
| QMultiMap() | |
| 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) |
| QList<Key> | uniqueKeys() const |
| QMultiMap<K, V> & | unite(const QMultiMap<K, V> &other) |
| QList<T> | values(const Key &key) const |
| QMultiMap<K, V> | operator+(const QMultiMap<K, V> &other) const |
| QMultiMap<K, V> & | operator+=(const QMultiMap<K, V> &other) |
Подробное описание
QMultiMap<Key, T> — один из универсальных классов контейнеров Qt. Он наследует QMap и расширяет его несколькими функциями, которые делают его способным хранить отображения с множественными значениями. Отображение с множественными значениями — это отображение, которое допускает несколько значений с одним ключом; QMap этого не допускает.
Поскольку QMultiMap наследует QMap, вся функциональность QMap также применима к QMultiMap. Например, вы можете использовать isEmpty(), чтобы проверить, пусто ли отображение, и вы можете проходить по QMultiMap, используя итераторы класса QMap (например, QMapIterator). Но в дополнение к этому он предоставляет функцию insert(), которая вставляет, но не перезаписывает какое-либо предыдущее значение, если ключ уже существует, и функцию replace(), которая соответствует, которая перезаписывает существующее значение, если ключ уже есть в отображении. Он также предоставляет удобные операторы +() и +=().
Пример:
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<T>:
QList<int> values = map.values("plenty");
for (int i = 0; i < values.size(); ++i)
cout << values.at(i) << Qt::endl; Элементы с одинаковым ключом доступны в порядке добавления, от последнего к первому.
Если вы предпочитаете итераторы в стиле STL, вы можете вызвать find(), чтобы получить итератор для первого элемента с ключом и перебирать с него:
QMultiMap<QString, int>::iterator i = map.find("plenty");
while (i != map.end() && i.key() == "plenty") {
cout << i.value() << Qt::endl;
++i;
} Типы данных ключа и значения QMultiMap должны быть присваиваемыми типами данных. Это относится к большинству типов данных, с которыми вы, вероятно, столкнетесь, но компилятор не позволит вам, например, хранить QWidget в качестве значения; вместо этого храните QWidget *. Кроме того, тип ключа QMultiMap должен обеспечивать оператор <(). Подробности см. в документации QMap.
См. также QMap, QMapIterator, QMutableMapIterator и QMultiHash.
Документация по членам-функциям
QMultiMap::QMultiMap(const QMap<Key, T> &other)
Конструирует копию other (которая может быть QMap или QMultiMap).
См. также operator=().
QMultiMap::QMultiMap(std::initializer_list<std::pair<Key, T> > list)
Конструирует отображение с копией каждого элемента в списке инициализации list.
Эта функция доступна только при компиляции программы в режиме C++11.
Эта функция была представлена в Qt 5.1.
QMultiMap::QMultiMap()
Конструирует пустое отображение.
typename QMap<Key, T>::const_iterator QMultiMap::constFind(const Key &key, const T &value) const
Возвращает итератор, указывающий на элемент с ключом key и значением value в отображении.
Если в отображении нет такого элемента, функция возвращает constEnd().
Эта функция была представлена в Qt 4.3.
См. также QMap::constFind().
bool QMultiMap::contains(const Key &key, const T &value) const
Возвращает true , если отображение содержит элемент с ключом key и значением value; в противном случае возвращает false.
Эта функция была представлена в Qt 4.3.
См. также QMap::contains().
int QMultiMap::count(const Key &key, const T &value) const
Возвращает количество элементов с ключом key и значением value.
Эта функция была представлена в Qt 4.3.
См. также QMap::count().
typename QMap<Key, T>::iterator QMultiMap::find(const Key &key, const T &value)
Возвращает итератор, указывающий на элемент с ключом key и значением value в отображении.
Если в отображении нет такого элемента, функция возвращает end().
Если в отображении есть несколько элементов с ключом key, эта функция возвращает итератор, который указывает на значение, вставленное последним.
Эта функция была представлена в Qt 4.3.
См. также QMap::find().
typename QMap<Key, T>::const_iterator QMultiMap::find(const Key &key, const T &value) const
Это перегруженная функция.
Возвращает константный итератор, указывающий на элемент с заданным ключом key и значением value в отображении.
Если в отображении нет такого элемента, функция возвращает end().
Если в отображении есть несколько элементов с заданным ключом key, эта функция возвращает константный итератор, который указывает на значение, вставленное последним.
Эта функция была представлена в Qt 4.3.
См. также QMap::find().
END_OF_DOCUMENT_MARKERtypename 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.
QList<Key> QMultiMap::uniqueKeys() const
Возвращает список, содержащий все ключи в карте в порядке возрастания. Ключи, встречающиеся несколько раз в карте, встречаются только один раз в возвращаемом списке.
Эта функция была добавлена в Qt 4.2.
QMultiMap<K, V> &QMultiMap::unite(const QMultiMap<K, V> &other)
Вставляет все записи из карты other в эту карту. Если ключ присутствует в обеих картах, ключ будет встречаться несколько раз в итоговой карте.
QList<T> QMultiMap::values(const Key &key) const
Возвращает список, содержащий все значения, связанные с ключом key, от последней вставки к первой.
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.15/qmultimap.html