Spec-Zone.ru › Qt 5.14

Класс QMap

Класс QMap — шаблонный класс, предоставляющий словарь на основе красно-чёрного дерева. Подробнее...

Заголовок: #include <QMap>
qmake: QT += core
Наследуется от:

QMultiMap

  • Список всех членов, включая унаследованные

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

Типы публичного доступа

класс const_iterator
класс iterator
класс key_iterator
typedef ConstIterator
typedef Iterator
typedef const_key_value_iterator
typedef difference_type
typedef key_type
typedef key_value_iterator
typedef mapped_type
typedef size_type

Публичные функции

QMap(const typename std::map<Key, T> &other)
QMap(QMap<Key, T> &&other)
QMap(const QMap<Key, T> &other)
QMap(std::initializer_list<std::pair<Key, T> > list)
QMap()
QMap<Key, T> & operator=(QMap<Key, T> &&other)
QMap<Key, T> & operator=(const QMap<Key, T> &other)
~QMap()
QMap::iterator begin()
QMap::const_iterator begin() const
QMap::const_iterator cbegin() const
QMap::const_iterator cend() const
void clear()
QMap::const_iterator constBegin() const
QMap::const_iterator constEnd() const
QMap::const_iterator constFind(const Key &key) const
QMap::const_key_value_iterator constKeyValueBegin() const
QMap::const_key_value_iterator constKeyValueEnd() const
bool contains(const Key &key) const
int count(const Key &key) const
int count() const
bool empty() const
QMap::iterator end()
QMap::const_iterator end() const
QPair<QMap::iterator, QMap::iterator> equal_range(const Key &key)
QPair<QMap::const_iterator, QMap::const_iterator> equal_range(const Key &key) const
QMap::iterator erase(QMap::iterator pos)
QMap::iterator find(const Key &key)
QMap::const_iterator find(const Key &key) const
T & first()
const T & first() const
const Key & firstKey() const
QMap::iterator insert(const Key &key, const T &value)
QMap::iterator insert(QMap::const_iterator pos, const Key &key, const T &value)
QMap::iterator insertMulti(const Key &key, const T &value)
QMap::iterator insertMulti(QMap::const_iterator pos, const Key &key, const T &value)
bool isEmpty() const
const Key key(const T &value, const Key &defaultKey = Key()) const
QMap::key_iterator keyBegin() const
QMap::key_iterator keyEnd() const
QMap::key_value_iterator keyValueBegin()
QMap::const_key_value_iterator keyValueBegin() const
QMap::key_value_iterator keyValueEnd()
QMap::const_key_value_iterator keyValueEnd() const
QList<Key> keys() const
QList<Key> keys(const T &value) const
T & last()
const T & last() const
const Key & lastKey() const
QMap::iterator lowerBound(const Key &key)
QMap::const_iterator lowerBound(const Key &key) const
int remove(const Key &key)
int size() const
void swap(QMap<Key, T> &other)
T take(const Key &key)
std::map<Key, T> toStdMap() const
QList<Key> uniqueKeys() const
QMap<Key, T> & unite(const QMap<Key, T> &other)
QMap::iterator upperBound(const Key &key)
QMap::const_iterator upperBound(const Key &key) const
const T value(const Key &key, const T &defaultValue = T()) const
QList<T> values() const
QList<T> values(const Key &key) const
bool operator!=(const QMap<Key, T> &other) const
bool operator==(const QMap<Key, T> &other) const
T & operator[](const Key &key)
const T operator[](const Key &key) const

Связанные нечлены

QDataStream & operator<<(QDataStream &out, const QMap<Key, T> &map)
QDataStream & operator>>(QDataStream &in, QMap<Key, T> &map)

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

QMap<Key, T> — один из универсальных классов контейнеров Qt. Он хранит пары (ключ, значение) и обеспечивает быстрый поиск значения, связанного с ключом.

QMap и QHash предоставляют очень похожие функции. Различия:

  • QHash обеспечивает, в среднем, более быстрый поиск, чем QMap. (См. Алгоритмическую сложность для подробностей.)
  • При итерации по QHash элементы упорядочиваются произвольно. В QMap элементы всегда сортируются по ключу.
  • Тип ключа QHash должен обеспечивать операцию operator==() и глобальную функцию qHash(Key). Тип ключа QMap должен обеспечивать операцию operator<() для задания полного порядка. Начиная с Qt 5.8.1, в качестве ключа можно безопасно использовать указатели, даже если базовая операция operator<() не обеспечивает полного порядка.

Вот пример QMap с ключами QString и значениями int:

QMap<QString, int> map;

Чтобы вставить пару (ключ, значение) в карту, можно использовать operator[]():

map["one"] = 1;
map["three"] = 3;
map["seven"] = 7;

Это вставляет следующие три пары (ключ, значение) в QMap: ("one", 1), ("three", 3) и ("seven", 7). Другой способ вставки элементов в карту — использование insert():

map.insert("twelve", 12);

Для поиска значения используйте operator[]() или value():

int num1 = map["thirteen"];
int num2 = map.value("thirteen");

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

Если нужно проверить, содержит ли карта определенный ключ, используйте contains():

int timeout = 30;
if (map.contains("TIMEOUT"))
    timeout = map.value("TIMEOUT");

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

int timeout = map.value("TIMEOUT", 30);

В общем, рекомендуется использовать contains() и value() вместо operator[]() для поиска ключа в карте. Причина в том, что operator[]() молча вставляет элемент в карту, если элемент с тем же ключом не существует (если карта не является const). Например, следующий фрагмент кода создаст 1000 элементов в памяти:

// WRONG
QMap<int, QWidget *> map;
...
for (int i = 0; i < 1000; ++i) {
    if (map[i] == okButton)
        cout << "Found button at index " << i << Qt::endl;
}

Чтобы избежать этой проблемы, замените map[i] на map.value(i) в коде выше.

Если требуется просмотреть все пары (ключ, значение), хранящиеся в QMap, можно использовать итератор. QMap предоставляет как итераторы в стиле Java (QMapIterator и QMutableMapIterator), так и итераторы в стиле STL (QMap::const_iterator и QMap::iterator). Вот как итерировать по QMap<QString, int> с помощью итератора в стиле Java:

QMapIterator<QString, int> i(map);
while (i.hasNext()) {
    i.next();
    cout << i.key() << ": " << i.value() << Qt::endl;
}

Вот тот же код, но теперь с итератором в стиле STL:

QMap<QString, int>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
    cout << i.key() << ": " << i.value() << Qt::endl;
    ++i;
}

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

Как правило, QMap допускает только одно значение на ключ. Если вы вызываете insert() с ключом, который уже существует в QMap, предыдущее значение будет удалено. Например:

map.insert("plenty", 100);
map.insert("plenty", 2000);
// map.value("plenty") == 2000

Однако, вы можете хранить несколько значений на один ключ, используя insertMulti() вместо insert() (или используя удобный подкласс QMultiMap). Если нужно извлечь все значения для одного ключа, можно использовать 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;

Элементы с одинаковым ключом доступны от последнего к первому вставленному. Другой подход — вызвать find() для получения STL-итератора первого элемента с ключом и итерировать оттуда:

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

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

QMap<QString, int> map;
...
foreach (int value, map)
    cout << value << Qt::endl;

Элементы могут быть удалены из карты несколькими способами. Один способ — вызвать remove(); это удалит любой элемент с заданным ключом. Другой способ — использовать QMutableMapIterator::remove(). Кроме того, можно очистить всю карту с помощью clear().

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

Пример:

#ifndef EMPLOYEE_H
#define EMPLOYEE_H

class Employee
{
public:
    Employee() {}
    Employee(const QString &name, QDate dateOfBirth);
    ...

private:
    QString myName;
    QDate myDateOfBirth;
};

inline bool operator<(const Employee &e1, const Employee &e2)
{
    if (e1.name() != e2.name())
        return e1.name() < e2.name();
    return e1.dateOfBirth() < e2.dateOfBirth();
}

#endif // EMPLOYEE_H

В примере мы начинаем с сравнения имён сотрудников. Если они совпадают, сравниваем даты рождения, чтобы разрешить ничью.

См. также QMapIterator, QMutableMapIterator, QHash и QSet.

Документация по типам элементов

typedef QMap::ConstIterator

Синоним Qt-стиля для QMap<Key, T>::const_iterator.

typedef QMap::Iterator

Синоним Qt-стиля для QMap<Key, T>::iterator.

typedef QMap::const_key_value_iterator

QMap::const_key_value_iterator предоставляет итератор в стиле STL для QMap и QMultiMap.

QMap::const_key_value_iterator по сути такой же, как QMap::const_iterator с той разницей, что operator*() возвращает пару ключ/значение, а не значение.

Этот typedef был введен в Qt 5.10.

См. также QKeyValueIterator.

typedef QMap::difference_type

Typedef для ptrdiff_t. Предоставлено для совместимости со STL.

typedef QMap::key_type

Typedef для Key. Предоставлено для совместимости со STL.

typedef QMap::key_value_iterator

QMap::key_value_iterator предоставляет итератор в стиле STL для QMap и QMultiMap.

QMap::key_value_iterator по сути такой же, как QMap::iterator с той разницей, что operator*() возвращает пару ключ/значение, а не значение.

Этот typedef был введен в Qt 5.10.

См. также QKeyValueIterator.

typedef QMap::mapped_type

Typedef для T. Предоставлено для совместимости со STL.

typedef QMap::size_type

Typedef для int. Предоставлено для совместимости со STL.

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

QMap::QMap(const typename std::map<Key, T> &other)

Создаёт копию other.

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

QMap::QMap(QMap<Key, T> &&other)

Создаёт QMap объект, указывая на тот же объект, на который указывал other.

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

QMap::QMap(const QMap<Key, T> &other)

Создаёт копию other.

Эта операция выполняется за постоянное время, так как QMap неявно разделяет ресурсы. Это делает возвращение QMap из функции очень быстрым. Если общая копия изменяется, она будет скопирована (copy-on-write), и это займёт линейное время.

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

QMap::QMap(std::initializer_list<std::pair<Key, T> > list)

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

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

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

QMap::QMap()

Создаёт пустую карту.

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

QMap<Key, T> &QMap::operator=(QMap<Key, T> &&other)

Перемещает содержимое other в этот QMap объект.

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

QMap<Key, T> &QMap::operator=(const QMap<Key, T> &other)

Присваивает other этому отображению и возвращает ссылку на это отображение.

QMap::~QMap()

Удаляет отображение. Ссылки на значения в отображении и все итераторы над этим отображением становятся недействительными.

QMap::iterator QMap::begin()

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

См. также constBegin() и end().

QMap::const_iterator QMap::begin() const

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

QMap::const_iterator QMap::cbegin() const

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

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

См. также begin() и cend().

QMap::const_iterator QMap::cend() const

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

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

См. также cbegin() и end().

void QMap::clear()

Удаляет все элементы из отображения.

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

QMap::const_iterator QMap::constBegin() const

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

См. также begin() и constEnd().

QMap::const_iterator QMap::constEnd() const

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

См. также constBegin() и end().

QMap::const_iterator QMap::constFind(const Key &key) const

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

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

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

См. также find() и QMultiMap::constFind().

QMap::const_key_value_iterator QMap::constKeyValueBegin() const

Возвращает постоянный итератор STL, указывающий на первую запись в отображении.

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

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

QMap::const_key_value_iterator QMap::constKeyValueEnd() const

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

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

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

bool QMap::contains(const Key &key) const

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

См. также count() и QMultiMap::contains().

int QMap::count(const Key &key) const

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

См. также contains(), insertMulti(), и QMultiMap::count().

int QMap::count() const

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

То же самое, что и size().

bool QMap::empty() const

Эта функция предоставляется для совместимости со STL. Она эквивалентна isEmpty(), возвращая true, если отображение пусто; в противном случае возвращает false.

QMap::iterator QMap::end()

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

См. также begin() и constEnd().

QMap::const_iterator QMap::end() const

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

QPair<QMap::iterator, QMap::iterator> QMap::equal_range(const Key &key)

Возвращает пару итераторов, определяющих диапазон значений [first, second), которые хранятся под ключом key.

QPair<QMap::const_iterator, QMap::const_iterator> QMap::equal_range(const Key &key) const

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

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

QMap::iterator QMap::erase(QMap::iterator pos)

Удаляет пару (ключ, значение), на которую указывает итератор pos из отображения и возвращает итератор на следующий элемент в отображении.

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

QMap::iterator QMap::find(const Key &key)

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

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

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

QMap<QString, int> map;
...
QMap<QString, int>::const_iterator i = map.find("HDR");
while (i != map.end() && i.key() == "HDR") {
    cout << i.value() << Qt::endl;
    ++i;
}

См. также constFind(), value(), values(), lowerBound(), upperBound(), и QMultiMap::find().

QMap::const_iterator QMap::find(const Key &key) const

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

T &QMap::first()

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

При неиспользовании (или вызове постоянной версии) это выполняется за постоянное время.

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

См. также last(), firstKey(), и isEmpty().

const T &QMap::first() const

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

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

const Key &QMap::firstKey() const

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

Это выполняется за постоянное время.

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

См. также lastKey(), first(), keyBegin(), и isEmpty().

QMap::iterator QMap::insert(const Key &key, const T &value)

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

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

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

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

QMap::iterator QMap::insert(QMap::const_iterator pos, const Key &key, const T &value)

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

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

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

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

Если есть несколько элементов с ключом ключ, то ровно один из них заменяется на значение.

Если подсказка верна и карта неразделяемая, вставка выполняется за амортизированное постоянное время.

При создании карты из отсортированных данных вставка наибольшего ключа вначале с помощью constBegin() быстрее, чем вставка в отсортированном порядке с помощью constEnd(), так как constEnd() - 1 (которое требуется для проверки корректности подсказки) требует логарифмического времени.

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

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

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

QMap::iterator QMap::insertMulti(const Key &ключ, const T &значение)

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

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

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

QMap::iterator QMap::insertMulti(QMap::const_iterator pos, const Key &ключ, const T &значение)

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

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

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

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

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

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

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

bool QMap::isEmpty() const

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

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

const Key QMap::key(const T &значение, const Key &ключПоУмолчанию = Key()) const

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

Возвращает первый ключ со значением значение или ключПоУмолчанию, если в карте нет элемента со значением значение. Если ключПоУмолчанию не указан, функция возвращает значение ключа по умолчанию.

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

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

См. также value() и keys().

QMap::key_iterator QMap::keyBegin() const

Возвращает константный итератор в стиле STL, указывающий на первый ключ в карте.

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

См. также keyEnd() и firstKey().

QMap::key_iterator QMap::keyEnd() const

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

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

См. также keyBegin() и lastKey().

QMap::key_value_iterator QMap::keyValueBegin()

Возвращает итератор в стиле STL, указывающий на первую запись в карте.

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

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

QMap::const_key_value_iterator QMap::keyValueBegin() const

Возвращает константный итератор в стиле STL, указывающий на первую запись в карте.

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

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

QMap::key_value_iterator QMap::keyValueEnd()

Возвращает итератор в стиле STL, указывающий на мнимую запись после последней записи в карте.

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

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

QMap::const_key_value_iterator QMap::keyValueEnd() const

Возвращает константный итератор в стиле STL, указывающий на мнимую запись после последней записи в карте.

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

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

QList<Key> QMap::keys() const

Возвращает список, содержащий все ключи в карте в порядке возрастания. Ключи, которые встречаются несколько раз в карте (потому что элементы были вставлены с помощью insertMulti() или использовалось unite() также встречаются несколько раз в списке.

Чтобы получить список уникальных ключей, где каждый ключ из карты встречается только один раз, используйте uniqueKeys().

Порядок гарантированно такой же, как используется в values().

См. также uniqueKeys(), values(), и key().

QList<Key> QMap::keys(const T &значение) const

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

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

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

T &QMap::last()

Возвращает ссылку на последнее значение в карте, то есть значение, сопоставленное наибольшему ключу. Эта функция предполагает, что карта не пуста.

При неразделяемом доступе (или вызове константной версии) выполняется за логарифмическое время.

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

См. также first(), lastKey(), и isEmpty().

const T &QMap::last() const

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

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

const Key &QMap::lastKey() const

Возвращает ссылку на наибольший ключ в карте. Эта функция предполагает, что карта не пуста.

Выполняется за логарифмическое время.

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

См. также firstKey(), last(), keyEnd(), и isEmpty().

QMap::iterator QMap::lowerBound(const Key &ключ)

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

Пример:

QMap<int, QString> map;
map.insert(1, "one");
map.insert(5, "five");
map.insert(10, "ten");

map.lowerBound(0);      // returns iterator to (1, "one")
map.lowerBound(1);      // returns iterator to (1, "one")
map.lowerBound(2);      // returns iterator to (5, "five")
map.lowerBound(10);     // returns iterator to (10, "ten")
map.lowerBound(999);    // returns end()

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

QMap<QString, int> map;
...
QMap<QString, int>::const_iterator i = map.lowerBound("HDR");
QMap<QString, int>::const_iterator upperBound = map.upperBound("HDR");
while (i != upperBound) {
    cout << i.value() << Qt::endl;
    ++i;
}

См. также upperBound() и find().

QMap::const_iterator QMap::lowerBound(const Key &ключ) const

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

int QMap::remove(const Key &ключ)

Удаляет все элементы, имеющие ключ ключ из карты. Возвращает количество удаленных элементов, которое обычно равно 1, но будет равно 0, если ключа нет в карте, или > 1, если insertMulti() использовалось с данным ключом.

См. также clear(), take(), и QMultiMap::remove().

int QMap::size() const

Возвращает количество пар (ключ, значение) в карте.

См. также isEmpty() и count().

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

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

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

T QMap::take(const Key &ключ)

Удаляет элемент с ключом key из карты и возвращает связанное с ним значение.

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

Если вам не нужно использовать возвращаемое значение, метод remove() более эффективен.

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

std::map<Key, T> QMap::toStdMap() const

Возвращает эквивалентную STL карту для данного QMap.

QList<Key> QMap::uniqueKeys() const

Возвращает список, содержащий все ключи в карте в порядке возрастания. Ключи, встречающиеся несколько раз в карте (потому что элементы были вставлены с помощью insertMulti() или использовался метод unite()), появляются в возвращаемом списке только один раз.

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

См. также keys() и values().

QMap<Key, T> &QMap::unite(const QMap<Key, T> &other)

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

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

QMap::iterator QMap::upperBound(const Key &key)

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

Пример:

QMap<int, QString> map;
map.insert(1, "one");
map.insert(5, "five");
map.insert(10, "ten");

map.upperBound(0);      // returns iterator to (1, "one")
map.upperBound(1);      // returns iterator to (5, "five")
map.upperBound(2);      // returns iterator to (5, "five")
map.upperBound(10);     // returns end()
map.upperBound(999);    // returns end()

См. также lowerBound() и find().

QMap::const_iterator QMap::upperBound(const Key &key) const

Это перегруженный метод.

const T QMap::value(const Key &key, const T &defaultValue = T()) const

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

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

См. также key(), values(), contains(), и operator[]().

QList<T> QMap::values() const

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

См. также keys() и value().

QList<T> QMap::values(const Key &key) const

Это перегруженный метод.

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

См. также count() и insertMulti().

bool QMap::operator!=(const QMap<Key, T> &other) const

Возвращает true если other не равно этой карте; в противном случае возвращает false.

Две карты считаются равными, если они содержат одни и те же пары (ключ, значение).

Для этой функции тип значения должен реализовывать operator==().

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

bool QMap::operator==(const QMap<Key, T> &other) const

Возвращает true если other равно этой карте; в противном случае возвращает false.

Две карты считаются равными, если они содержат одни и те же пары (ключ, значение).

Для этой функции тип значения должен реализовывать operator==().

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

T &QMap::operator[](const Key &key)

Возвращает значение, связанное с ключом key, в виде изменяемой ссылки.

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

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

const T QMap::operator[](const Key &key) const

Это перегруженный метод.

То же, что и value().

Связанные внешние функции

QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)

Записывает карту map в поток out.

Для этой функции типы ключей и значений должны реализовывать operator<<().

См. также Формат операторов QDataStream.

QDataStream &operator>>(QDataStream &in, QMap<Key, T> &map)

Читает карту из потока in в map.

Для этой функции типы ключей и значений должны реализовывать operator>>().

См. также Формат операторов QDataStream.

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

Spec-Zone.ru

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