Класс 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(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 должен обеспечивать оператор ==() и глобальную функцию 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 *. Кроме того, тип ключа 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
typedef 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
typedef 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.
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() используется в качестве подсказки, это указывает на то, что ключ меньше любого ключа в отображении, в то время как constEnd() предполагает, что ключ строго больше любого ключа в отображении. В противном случае подсказка должна удовлетворять условию (pos - 1).key() < ключ <= pos.key(). Если подсказка pos неверна, она игнорируется, и выполняется обычная вставка.
Если в отображении уже есть элемент с ключом ключ, значение этого элемента заменяется на значение.
Если в отображении есть несколько элементов с ключом ключ, то ровно один из них заменяется на значение.
Если подсказка верна, а отображение не является совместно используемым, вставка выполняется за амортизированное постоянное время.
При создании отображения из упорядоченных данных вставка наибольшего ключа вначале с помощью 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.
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() << 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 из карты и возвращает связанное с ним значение.
Если элемент не существует в карте, функция просто возвращает значение по умолчанию. Если в карте есть несколько элементов с ключом 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==().
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 &QMap::operator<<(QDataStream &out, const QMap<Key, T> &map)
Записывает карту map в поток out.
Эта функция требует, чтобы типы ключа и значения реализовывали operator<<().
См. также Формат операторов QDataStream.
QDataStream &QMap::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.13/qmap.html