Класс QMap
Класс QMap — это шаблонный класс, предоставляющий словарь на основе красно-чёрного дерева. Подробнее...
| Заголовок: | #include <QMap> |
| qmake: | QT += core |
| Наследуется от: |
Примечание: Все функции в этом классе являются взаимоисключающими.
Публичные типы
| класс | 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() | |
| QMap(std::initializer_list<std::pair<Key, T> > list) | |
| QMap(const QMap<Key, T> &other) | |
| QMap(QMap<Key, T> &&other) | |
| QMap(const typename std::map<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 |
| QMap<Key, T> & | operator=(const QMap<Key, T> &other) |
| QMap<Key, T> & | operator=(QMap<Key, T> &&other) |
| 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 — это шаблонный класс, предоставляющий словарь на основе красно-чёрного дерева.
QMap<Key, T> — один из обобщённых контейнерных классов Qt. Он хранит пары (ключ, значение) и обеспечивает быстрый поиск значения, связанного с ключом.
QMap и QHash предоставляют очень похожую функциональность. Различия заключаются в следующем:
- QHash обеспечивает, в среднем, более быстрый поиск, чем QMap. (См. Сложность алгоритмов для получения подробной информации.)
- При итерации по QHash элементы упорядочиваются произвольно. В QMap элементы всегда упорядочены по ключу.
- Тип ключа QHash должен предоставлять оператор ==() и глобальную функцию qHash(Key). Тип ключа QMap должен предоставлять оператор <(), определяющий полное упорядочение. Начиная с Qt 5.8.1, в качестве ключа также безопасно использовать указатель на тип, даже если в нём подлежащий оператор <() не определяет полное упорядочение.
Вот пример QMap с ключами QString и значениями int:
QMap<QString, int> map;
Для добавления пары (ключ, значение) в карту можно использовать оператор[]():
map["one"] = 1; map["three"] = 3; map["seven"] = 7;
Это вставляет следующие три пары (ключ, значение) в QMap: ("one", 1), ("three", 3) и ("seven", 7). Ещё один способ вставки элементов в карту — использование insert():
map.insert("twelve", 12); Для поиска значения используйте оператор[]() или 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() для поиска ключа в карте вместо оператора[]. Причина заключается в том, что оператор[]() молча добавляет элемент в карту, если элемент с таким ключом отсутствует (если карта не является константной). Например, следующий фрагмент кода создаст 1000 элементов в памяти:
// WRONG
QMap<int, QWidget *> map;
...
for (int i = 0; i < 1000; ++i) {
if (map[i] == okButton)
cout << "Found button at index " << i << 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() << endl;
} Вот тот же код, но на этот раз с итератором в стиле STL:
QMap<QString, int>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
cout << i.key() << ": " << i.value() << 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) << endl; Элементы с одинаковым ключом доступны от недавно вставленных к старым. Другой подход — вызвать find() для получения итератора в стиле STL для первого элемента с ключом и итерироваться оттуда:
QMap<QString, int>::iterator i = map.find("plenty");
while (i != map.end() && i.key() == "plenty") {
cout << i.value() << endl;
++i;
} Если нужно извлечь только значения из карты (а не ключи), можно также использовать foreach:
QMap<QString, int> map;
...
foreach (int value, map)
cout << value << endl; Элементы можно удалить из карты несколькими способами. Один способ — вызвать remove(); это удалит любой элемент с данным ключом. Другой способ — использовать QMutableMapIterator::remove(). Кроме того, можно очистить всю карту с помощью clear().
Ключевые и значения данных в QMap должны быть присваиваемыми типами данных. Это относится к большинству типов данных, с которыми вы можете столкнуться, но компилятор не позволит вам, например, хранить QWidget в качестве значения; вместо этого храните указатель на QWidget (*QWidget). Кроме того, тип ключа QMap должен поддерживать оператор <(). QMap использует его для сортировки элементов и предполагает, что два ключа x и y равны, если ни x < y ни y < x не верны.
Пример:
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
class Employee
{
public:
Employee() {}
Employee(const QString &name, const 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
Тип-синоним для ptrdiff_t. Предоставлен для совместимости со STL.
typedef QMap::key_type
Тип-синоним для 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
Тип-синоним для T. Предоставлен для совместимости со STL.
typedef QMap::size_type
Тип-синоним для int. Предоставлен для совместимости со STL.
Документация по функциям-членам
QMap::QMap()
Создаёт пустую карту.
См. также clear().
QMap::QMap(std::initializer_list<std::pair<Key, T> > list)
Создаёт карту с копией каждого элемента из списка инициализации list.
Эта функция доступна только если программа компилируется в режиме C++11.
Эта функция была представлена в Qt 5.1.
QMap::QMap(const QMap<Key, T> &other)
Создаёт копию other.
Эта операция выполняется за постоянное время, потому что QMap использует неявное совместное использование. Это делает возврат QMap из функции очень быстрым. Если изменяется общий экземпляр, он копируется (copy-on-write), и это занимает линейное время.
См. также operator=().
QMap::QMap(QMap<Key, T> &&other)
Создаёт QMap экземпляр, используя перемещение, связывая его с объектом, на который указывал other.
Эта функция была представлена в Qt 5.2.
QMap::QMap(const typename std::map<Key, T> &other)
Создаёт копию other.
См. также toStdMap().
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.
QMap::const_iterator QMap::cend() const
Возвращает постоянный итератор в стиле STL, указывающий на мнимый элемент после последнего элемента в карте.
Этот метод был добавлен в Qt 5.0.
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() << endl;
++i;
} См. также constFind(), value(), values(), lowerBound(), upperBound(), и QMultiMap::find().
QMap::const_iterator QMap::find(const Key &key) const
Это перегруженный метод.
T &QMap::first()
Возвращает ссылку на первое значение в карте, то есть значение, сопоставленное с наименьшим ключом. Эта функция предполагает, что карта не пуста.
При вызове неразделяемой (или const-версии) эта операция выполняется за постоянное время.
Этот метод был добавлен в 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.
Если есть несколько элементов с ключом key, то ровно один из них заменяется на value.
Если подсказка правильная, и карта неразделяемая, вставка выполняется за амортизированное постоянное время.
END_OF_DOCUMENT_MARKERПри создании карты из отсортированных данных вставка наибольшего ключа вначале с помощью constBegin() быстрее, чем вставка в отсортированном порядке с помощью constEnd(), так как constEnd() - 1 (необходимое для проверки валидности подсказки) требует логарифмического времени.
Примечание: Будьте внимательны с подсказкой. Предоставление итератора из устаревшего общего экземпляра может привести к сбою, но также существует риск, что он незаметно повредит как карту, так и карту pos.
Эта функция была добавлена в Qt 5.1.
См. также insertMulti().
QMap::iterator QMap::insertMulti(const Key &key, const T &value)
Вставляет новую запись с ключом key и значением value.
Если в карте уже есть запись с тем же ключом, эта функция просто создаст новую. (Это поведение отличается от insert(), которое перезаписывает значение существующей записи.)
См. также insert() и values().
QMap::iterator QMap::insertMulti(QMap::const_iterator pos, const Key &key, const T &value)
Это перегруженная функция.
Вставляет новую запись с ключом key и значением value, используя подсказку pos для указания места вставки.
Если используется constBegin() в качестве подсказки, это означает, что key меньше любого ключа в карте, а constEnd() означает, что key больше любого ключа в карте. В противном случае подсказка должна удовлетворять условию (pos - 1).key() < key <= pos.key(). Если подсказка pos неверна, она игнорируется, и выполняется обычная операция insertMulti.
Если в карте уже есть запись с тем же ключом, эта функция просто создаст новую.
Примечание: Будьте внимательны с подсказкой. Предоставление итератора из устаревшего общего экземпляра может привести к сбою, но также существует риск, что он незаметно повредит как карту, так и карту pos.
Эта функция была добавлена в Qt 5.1.
См. также insert().
bool QMap::isEmpty() const
Возвращает true если карта не содержит элементов; в противном случае возвращает false.
См. также size().
const Key QMap::key(const T &value, const Key &defaultKey = Key()) const
Это перегруженная функция.
Возвращает первый ключ со значением value или defaultKey, если в карте нет элемента со значением value. Если defaultKey не указан, функция возвращает ключ, созданный по умолчанию.
Эта функция может быть медленной (линейное время), потому что внутренняя структура данных QMap оптимизирована для быстрого поиска по ключу, а не по значению.
Эта функция была добавлена в Qt 4.3.
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 &value) const
Это перегруженная функция.
Возвращает список, содержащий все ключи, связанные со значением value, в порядке возрастания.
Эта функция может быть медленной (линейное время), потому что внутренняя структура данных 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 &key)
Возвращает итератор, указывающий на первый элемент с ключом key в карте. Если в карте нет элемента с ключом 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()
Если карта содержит несколько элементов с ключом key, эта функция возвращает итератор, который указывает на значение, вставленное в последнюю очередь. Другие значения доступны путем инкремента итератора. Например, вот код, который перебирает все элементы с одинаковым ключом:
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() << endl;
++i;
} См. также upperBound() и find().
QMap::const_iterator QMap::lowerBound(const Key &key) const
Это перегруженная функция.
int QMap::remove(const Key &key)
Удаляет все элементы с ключом 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 из карты и возвращает связанное с ним значение.
Если элемент не существует в отображении, функция просто возвращает значение по умолчанию. Если в отображении есть несколько элементов с ключом key, удаляется и возвращается только последний вставленный.
Если возвращаемое значение не используется, remove() более эффективна.
См. также remove().
std::map<Key, T> QMap::toStdMap() const
Возвращает эквивалентное STL отображение для этого QMap.
QList<Key> QMap::uniqueKeys() const
Возвращает список, содержащий все ключи в отображении в порядке возрастания. Ключи, которые встречаются несколько раз в отображении (потому что элементы были вставлены с помощью insertMulti() или был использован unite()), встречаются только один раз в возвращаемом списке.
Эта функция была добавлена в Qt 4.2.
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
Возвращает список, содержащий все значения в отображении в порядке возрастания их ключей. Если ключ связан с несколькими значениями, все его значения будут в списке, а не только последнее вставленное.
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==().
QMap<Key, T> &QMap::operator=(const QMap<Key, T> &other)
Присваивает other этому отображению и возвращает ссылку на это отображение.
QMap<Key, T> &QMap::operator=(QMap<Key, T> &&other)
Перемещает присваивание other этому экземпляру QMap.
Эта функция была добавлена в Qt 5.2.
bool QMap::operator==(const QMap<Key, T> &other) const
Возвращает true если other равно этому отображению; в противном случае возвращает false.
Два отображения считаются равными, если они содержат те же пары (ключ, значение).
Эта функция требует, чтобы тип значения реализовывал operator==().
См. также operator!=().
T &QMap::operator[](const Key &key)
Возвращает значение, связанное с ключом key, как ссылку для изменения.
Если отображение не содержит элемента с ключом key, функция вставляет в отображение значение по умолчанию с ключом key и возвращает ссылку на него. Если отображение содержит несколько элементов с ключом key, эта функция возвращает ссылку на последнее вставленное значение.
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.12/qmap.html