Sur cette page

QMap Class

template <typename Key, typename T> class QMap

La classe QMap est une classe de modèle qui fournit un tableau associatif. En savoir plus...

En-tête : #include <QMap>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Remarque : toutes les fonctions de cette classe sont réentrantes.

Comparaisons avec QMap

CatégorieTypes comparables
égalitéQMap

Types publics

Fonctions publiques

QMap()
QMap(const std::map<Key, T> &other)
QMap(std::initializer_list<std::pair<Key, T>> list)
QMap(std::map<Key, T> &&other)
QMap(const QMap<Key, T> &other)
QMap(QMap<Key, T> &&other)
~QMap()
(since 6.4) auto asKeyValueRange() &&
(since 6.4) auto asKeyValueRange() &
(since 6.4) auto asKeyValueRange() const &&
(since 6.4) auto asKeyValueRange() const &
QMap<Key, T>::iterator begin()
QMap<Key, T>::const_iterator begin() const
QMap<Key, T>::const_iterator cbegin() const
QMap<Key, T>::const_iterator cend() const
void clear()
QMap<Key, T>::const_iterator constBegin() const
QMap<Key, T>::const_iterator constEnd() const
QMap<Key, T>::const_iterator constFind(const Key &key) const
QMap<Key, T>::const_key_value_iterator constKeyValueBegin() const
QMap<Key, T>::const_key_value_iterator constKeyValueEnd() const
bool contains(const Key &key) const
QMap<Key, T>::size_type count(const Key &key) const
QMap<Key, T>::size_type count() const
bool empty() const
QMap<Key, T>::iterator end()
QMap<Key, T>::const_iterator end() const
std::pair<QMap<Key, T>::iterator, QMap<Key, T>::iterator> equal_range(const Key &key)
std::pair<QMap<Key, T>::const_iterator, QMap<Key, T>::const_iterator> equal_range(const Key &key) const
QMap<Key, T>::iterator erase(QMap<Key, T>::const_iterator pos)
(since 6.0) QMap<Key, T>::iterator erase(QMap<Key, T>::const_iterator first, QMap<Key, T>::const_iterator last)
QMap<Key, T>::iterator find(const Key &key)
QMap<Key, T>::const_iterator find(const Key &key) const
T &first()
const T &first() const
const Key &firstKey() const
void insert(QMap<Key, T> &&map)
void insert(const QMap<Key, T> &map)
QMap<Key, T>::iterator insert(const Key &key, const T &value)
QMap<Key, T>::iterator insert(QMap<Key, T>::const_iterator pos, const Key &key, const T &value)
bool isEmpty() const
Key key(const T &value, const Key &defaultKey = Key()) const
QMap<Key, T>::key_iterator keyBegin() const
QMap<Key, T>::key_iterator keyEnd() const
QMap<Key, T>::key_value_iterator keyValueBegin()
QMap<Key, T>::const_key_value_iterator keyValueBegin() const
QMap<Key, T>::key_value_iterator keyValueEnd()
QMap<Key, T>::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<Key, T>::iterator lowerBound(const Key &key)
QMap<Key, T>::const_iterator lowerBound(const Key &key) const
QMap<Key, T>::size_type remove(const Key &key)
(since 6.1) QMap<Key, T>::size_type removeIf(Predicate pred)
QMap<Key, T>::size_type size() const
void swap(QMap<Key, T> &other)
T take(const Key &key)
std::map<Key, T> toStdMap() const &
(since 6.0) std::map<Key, T> toStdMap() &&
QMap<Key, T>::iterator upperBound(const Key &key)
QMap<Key, T>::const_iterator upperBound(const Key &key) const
T value(const Key &key, const T &defaultValue = T()) const
QList<T> values() const
QMap<Key, T> &operator=(QMap<Key, T> &&other)
QMap<Key, T> &operator=(const QMap<Key, T> &other)
T &operator[](const Key &key)
T operator[](const Key &key) const
(since 6.1) qsizetype erase_if(QMap<Key, T> &map, Predicate pred)
(since 6.8) size_t qHash(const QMap<Key, T> &key, size_t seed = 0)
bool operator!=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
(since 6.12) bool operator<(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)
(since 6.12) bool operator<=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
(since 6.12) auto operator<=>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
bool operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
(since 6.12) bool operator>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
(since 6.12) bool operator>=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)
QDataStream &operator>>(QDataStream &in, QMap<Key, T> &map)

Description détaillée

QMap<KEY, T> est l'une des classes de conteneurs génériques de Qt, où Key est le type utilisé pour les clés de recherche et T le type de valeur associée. Elle stocke des paires (clé, valeur) et permet une recherche rapide par clé.

QMap et QHash offrent des fonctionnalités très similaires. Les différences sont les suivantes :

  • QHash xml-ph-0000@deepl.internal permet en moyenne des recherches plus rapides que QMap. (Voir Complexité algorithmique pour plus de détails.)
  • Lors d’une itération sur un ` QHash`, les éléments sont classés de manière arbitraire. Avec QMap, les éléments sont toujours triés par clé.
  • Le type de clé d’un ` QHash ` doit fournir l’opérateur `==()` et une fonction globale ` qHash(Key)`. Le type de clé d’un `QMap` doit fournir l’opérateur `<()` spécifiant un ordre total. Depuis Qt 5.8.1, il est également possible d’utiliser en toute sécurité un type pointeur comme clé, même si l’opérateur `<()` sous-jacent ne fournit pas d’ordre total.

Voici un exemple de QMap avec des clés de type « QString » et des valeurs de type « int » :

QMap<QString, int> map;

Pour insérer une paire (clé, valeur) dans la carte, vous pouvez utiliser l’opérateur []() :

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

Cela insère les trois paires (clé, valeur) suivantes dans le QMap : (« one », 1), (« three », 3) et (« seven », 7). Une autre façon d'insérer des éléments dans le QMap consiste à utiliser la méthode insert() :

map.insert("twelve", 12);

Pour rechercher une valeur, utilisez l’opérateur []() ou la fonction value() :

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

S’il n’y a pas d’élément avec la clé spécifiée dans la carte, ces fonctions renvoient une valeur construite par défaut.

Si vous souhaitez vérifier si la carte contient une clé donnée, utilisez ` contains()` :

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

Il existe également une surcharge de la fonction ` value()` qui utilise son deuxième argument comme valeur par défaut s’il n’y a pas d’élément avec la clé spécifiée :

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

En général, nous vous recommandons d’utiliser ` contains()` et ` value()` plutôt que l’opérateur `[]()` pour rechercher une clé dans une carte. En effet, l’opérateur []() insère silencieusement un élément dans la carte s’il n’existe aucun élément portant la même clé (à moins que la carte ne soit de type const). Par exemple, l’extrait de code suivant créera 1 000 éléments en mémoire :

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

Pour éviter ce problème, remplacez map[i] par map.value(i) dans le code ci-dessus.

Si vous souhaitez parcourir toutes les paires (clé, valeur) stockées dans un QMap, vous pouvez utiliser un itérateur. QMap fournit à la fois des itérateurs de style Java (QMapIterator et QMutableMapIterator) et des itérateurs de style STL (QMap::const_iterator et QMap::iterator). Voici comment parcourir un QMap<QString, int> à l'aide d'un itérateur de type Java :

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

Voici le même code, mais en utilisant cette fois-ci un itérateur de type STL :

for (auto i = map.cbegin(), end = map.cend(); i != end; ++i)
    cout << qPrintable(i.key()) << ": " << i.value() << endl;

Les éléments sont parcourus dans l’ordre croissant des clés.

Un QMap n'autorise qu'une seule valeur par clé. Si vous appelez ` insert()` avec une clé qui existe déjà dans le QMap, la valeur précédente sera effacée. Par exemple :

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

Cependant, vous pouvez stocker plusieurs valeurs par clé en utilisant ` QMultiMap`.

Si vous avez uniquement besoin d’extraire les valeurs d’une carte (et non les clés), vous pouvez également utiliser une boucle « for » basée sur une plage :

QMap<QString, int> map;
//...
for (int value : std::as_const(map))
    cout << value << endl;

Les éléments peuvent être supprimés de la carte de plusieurs façons. L’une d’elles consiste à appeler ` remove()` ; cela supprimera tout élément ayant la clé indiquée. Une autre méthode consiste à utiliser ` QMutableMapIterator::remove()`. De plus, vous pouvez vider l’intégralité de la carte à l’aide de ` clear()`.

Les types de données des clés et des valeurs de QMap doivent être des types de données assignables. Cela couvre la plupart des types de données que vous êtes susceptible de rencontrer, mais le compilateur ne vous permettra pas, par exemple, de stocker un QWidget en tant que valeur ; vous devrez plutôt stocker un QWidget *. De plus, le type de clé de QMap doit fournir l'opérateur <(). QMap l'utilise pour maintenir ses éléments triés, et considère que deux clés x et y sont équivalentes si ni x < y ni y < x ne sont vrais.

Exemple :

#ifndef EMPLOYEE_H
#define EMPLOYEE_H

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

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

Dans cet exemple, on commence par comparer les noms des employés. S'ils sont égaux, on compare leurs dates de naissance pour départager les ex aequo.

Voir également QMapIterator, QMutableMapIterator, QHash et QSet.

Documentation sur les types de membres

QMap::ConstIterator

Synonyme de « QMap::const_iterator » dans le style Qt XML.

QMap::Iterator

Synonyme de style Qt pour « QMap::iterator ».

QMap::const_key_value_iterator

Le typedef `QMap::const_key_value_iterator` fournit un itérateur de type STL pour ` QMap`.

QMap::const_key_value_iterator est essentiellement identique à QMap::const_iterator, à la différence que l'opérateur *() renvoie une paire clé/valeur au lieu d'une valeur.

Voir également QKeyValueIterator.

[alias] QMap::difference_type

Définition de type pour ptrdiff_t. Fournie à des fins de compatibilité avec la STL.

[alias] QMap::key_type

Définition de type pour « Key ». Fournie à des fins de compatibilité avec la STL.

QMap::key_value_iterator

Le typedef `QMap::key_value_iterator` fournit un itérateur de type STL pour ` QMap`.

QMap::key_value_iterator est essentiellement identique à QMap::iterator, à la différence que l'opérateur *() renvoie une paire clé/valeur au lieu d'une valeur.

Voir également ` QKeyValueIterator`.

[alias] QMap::mapped_type

Définition de type pour T. Fournie à des fins de compatibilité avec la STL.

[alias] QMap::size_type

Définition de type pour `int`. Fournie à des fins de compatibilité avec la STL.

Documentation des fonctions membres

[default] QMap::QMap()

Crée un map vide.

Voir aussi clear().

[explicit] QMap::QMap(const std::map<Key, T> &other)

Crée une copie de other.

Voir également toStdMap().

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

Crée une carte contenant une copie de chacun des éléments de la liste d'initialisation list.

[explicit] QMap::QMap(std::map<Key, T> &&other)

Crée une carte à partir de other.

Voir aussi toStdMap().

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

Crée une copie de other.

Cette opération s'effectue en temps constant, car le QMap est implicitement partagé. Cela rend très rapide le retour d'un QMap depuis une fonction. Si une instance partagée est modifiée, elle sera copiée (copie à l'écriture), ce qui prend un temps linéaire.

Voir également operator=.

[implicit] QMap::QMap(QMap<Key, T> &&other)

Crée une instance de QMap par copie.

[implicit] QMap::~QMap()

Supprime la table. Les références aux valeurs contenues dans la table, ainsi que tous les itérateurs sur cette table, deviennent invalides.

[since 6.4] auto QMap::asKeyValueRange() &&

[since 6.4] auto QMap::asKeyValueRange() &

[since 6.4] auto QMap::asKeyValueRange() const &&

[since 6.4] auto QMap::asKeyValueRange() const &

Renvoie un objet « range » qui permet de parcourir cette carte sous forme de paires clé/valeur. Par exemple, cet objet « range » peut être utilisé dans une boucle « for » basée sur une plage, en combinaison avec une déclaration de liaison structurée :

QMap<QString, int> map;
map.insert("January", 1);
map.insert("February", 2);
// ...
map.insert("December", 12);

for (auto [key, value] : map.asKeyValueRange()) {
    cout << qPrintable(key) << ": " << value << endl;
    --value; // convert to JS month indexing
}

Notez que la clé et la valeur obtenues de cette manière sont toutes deux des références à celles contenues dans la carte. Plus précisément, la modification de la valeur entraînera une modification de la carte elle-même.

Ces fonctions ont été introduites dans Qt 6.4.

Voir également QKeyValueIterator.

QMap<Key, T>::iterator QMap::begin()

Renvoie un itérateur de type STL pointant vers le premier élément de la table.

Voir également constBegin() et end().

QMap<Key, T>::const_iterator QMap::begin() const

Il s'agit d'une fonction surchargée.

QMap<Key, T>::const_iterator QMap::cbegin() const

Renvoie un itérateur de type STL constant pointant vers le premier élément de la table.

Voir également begin() et cend().

QMap<Key, T>::const_iterator QMap::cend() const

Renvoie un itérateur de type STL (const) pointant vers l'élément imaginaire situé après le dernier élément de la table.

Voir également cbegin() et end().

void QMap::clear()

Supprime tous les éléments de la carte.

Voir aussi remove().

QMap<Key, T>::const_iterator QMap::constBegin() const

Renvoie un itérateur const de type STL pointant vers le premier élément de la table.

Voir également ` begin()` et ` constEnd()`.

QMap<Key, T>::const_iterator QMap::constEnd() const

Renvoie un itérateur de type STL (const) pointant vers l'élément imaginaire situé après le dernier élément de la table.

Voir également constBegin() et end().

QMap<Key, T>::const_iterator QMap::constFind(const Key &key) const

Renvoie un itérateur `const` pointant vers l'élément de la carte dont la clé est ` key `.

Si la table ne contient aucun élément avec la clé « key », la fonction renvoie « constEnd »().

Voir aussi find().

QMap<Key, T>::const_key_value_iterator QMap::constKeyValueBegin() const

Renvoie un itérateur de type STL (const) pointant vers la première entrée de la table.

Voir aussi keyValueBegin().

QMap<Key, T>::const_key_value_iterator QMap::constKeyValueEnd() const

Renvoie un itérateur de type STL (const) pointant vers l'entrée imaginaire située après la dernière entrée de la table.

Voir aussi ` constKeyValueBegin()`.

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

Renvoie « true » si la carte contient un élément dont la clé est « key » ; sinon, renvoie « false ».

Voir également count().

QMap<Key, T>::size_type QMap::count(const Key &key) const

Renvoie le nombre d'éléments associés à la clé « key ».

Voir aussi contains().

QMap<Key, T>::size_type QMap::count() const

Identique à ` size()`.

Il s'agit d'une fonction surchargée.

bool QMap::empty() const

Cette fonction est fournie à des fins de compatibilité avec la STL. Elle équivaut à ` isEmpty()`, qui renvoie `true` si la table est vide ; sinon, elle renvoie `false`.

QMap<Key, T>::iterator QMap::end()

Renvoie un itérateur de type STL pointant vers l'élément imaginaire situé après le dernier élément de la table.

Voir également begin() et constEnd().

QMap<Key, T>::const_iterator QMap::end() const

Il s'agit d'une fonction surchargée.

std::pair<QMap<Key, T>::iterator, QMap<Key, T>::iterator> QMap::equal_range(const Key &key)

Renvoie une paire d'itérateurs délimitant l'intervalle de valeurs [first, second), qui sont stockées sous key.

std::pair<QMap<Key, T>::const_iterator, QMap<Key, T>::const_iterator> QMap::equal_range(const Key &key) const

Il s'agit d'une fonction surchargée.

QMap<Key, T>::iterator QMap::erase(QMap<Key, T>::const_iterator pos)

Supprime de la carte la paire (clé, valeur) pointée par l'itérateur pos, puis renvoie un itérateur vers l'élément suivant de la carte.

Remarque : l'itérateur pos doit être valide et pouvoir être déréférencé.

Voir aussi remove().

[since 6.0] QMap<Key, T>::iterator QMap::erase(QMap<Key, T>::const_iterator first, QMap<Key, T>::const_iterator last)

Supprime de la carte les paires (clé, valeur) pointées par la plage d'itérateurs [first, last). Renvoie un itérateur vers l'élément de la carte suivant le dernier élément supprimé.

Remarque : l'intervalle [first, last) doit être un intervalle valide dans *this.

Cette fonction a été introduite dans Qt 6.0.

Voir aussi remove().

QMap<Key, T>::iterator QMap::find(const Key &key)

Renvoie un itérateur pointant vers l'élément de la carte dont la clé est « key ».

Si la table ne contient aucun élément avec la clé « key », la fonction renvoie « end »().

Voir également constFind(), value(), values(), lowerBound() et upperBound().

QMap<Key, T>::const_iterator QMap::find(const Key &key) const

Il s'agit d'une fonction surchargée.

T &QMap::first()

Renvoie une référence à la première valeur de la table, c'est-à-dire la valeur associée à la clé la plus petite. Cette fonction suppose que la table n'est pas vide.

Lorsqu’elle n’est pas partagée (ou que la version `const` est appelée), cette fonction s’exécute en temps constant.

Voir également last(), firstKey() et isEmpty().

const T &QMap::first() const

Il s'agit d'une fonction surchargée.

const Key &QMap::firstKey() const

Renvoie une référence à la plus petite clé de la carte. Cette fonction suppose que la carte n'est pas vide.

Cette opération s'exécute en temps constant.

Voir également lastKey(), first(), keyBegin() et isEmpty().

void QMap::insert(QMap<Key, T> &&map)

Déplace tous les éléments de map vers cette carte.

Si une clé est commune aux deux cartes, sa valeur sera remplacée par celle stockée dans map.

Si map est partagée, les éléments seront alors copiés.

void QMap::insert(const QMap<Key, T> &map)

Insère tous les éléments de map dans cette carte.

Si une clé est commune aux deux cartes, sa valeur sera remplacée par celle stockée dans map.

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

Insère un nouvel élément avec la clé « key » et la valeur « value ».

S'il existe déjà un élément avec la clé key, la valeur de cet élément est remplacée par value.

L’insertion d’une paire clé/valeur avec une clé existante remplace la valeur existante.

Renvoie un itérateur pointant vers l'élément nouveau ou mis à jour.

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

Insère un nouvel élément avec la clé key, la valeur value et l'indication pos précisant où effectuer l'insertion.

Si constBegin() est utilisé comme indice, cela indique que key est inférieur à toutes les clés de la carte, tandis que constEnd() suggère que key est (strictement) supérieur à toutes les clés de la carte. Sinon, l’indication doit satisfaire la condition (pos - 1).key() < key <= pos.key(). Si l’indication pos est erronée, elle est ignorée et une insertion normale est effectuée.

S'il existe déjà un élément avec la clé key, la valeur de cet élément est remplacée par value.

Si l’indication est correcte et que la table n’est pas partagée, l’insertion s’exécute en temps constant amorti.

Lors de la création d’une carte à partir de données triées, l’insertion de la plus grande clé en premier avec ` constBegin()` est plus rapide que l’insertion dans l’ordre trié avec ` constEnd()`, car ` constEnd()` - 1 (nécessaire pour vérifier si l’indication est valide) nécessite un temps logarithmique.

Remarque : soyez prudent avec l’indication. Fournir un itérateur provenant d’une ancienne instance partagée peut provoquer un plantage, mais il existe également un risque que cela corrompe silencieusement à la fois la carte et la carte pos.

Renvoie un itérateur pointant vers l’élément nouveau/mis à jour.

Il s'agit d'une fonction surchargée.

bool QMap::isEmpty() const

Renvoie ` true ` si la carte ne contient aucun élément ; sinon, renvoie `false`.

Voir également size().

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

Renvoie la première clé dont la valeur est value, ou defaultKey si la table ne contient aucun élément dont la valeur est value. Si aucune defaultKey n'est fournie, la fonction renvoie une clé construite par défaut.

Cette fonction peut être lente (temps linéaire), car la structure de données interne de ` QMap` est optimisée pour une recherche rapide par clé, et non par valeur.

Voir également value() et keys().

QMap<Key, T>::key_iterator QMap::keyBegin() const

Renvoie un itérateur de type STL (const) pointant vers la première clé de la table.

Voir également keyEnd() et firstKey().

QMap<Key, T>::key_iterator QMap::keyEnd() const

Renvoie un itérateur de type STL (const) pointant vers l'élément imaginaire situé après la dernière clé de la table.

Voir aussi keyBegin() et lastKey().

QMap<Key, T>::key_value_iterator QMap::keyValueBegin()

Renvoie un itérateur de type STL pointant vers la première entrée de la table.

Voir aussi ` keyValueEnd()`.

QMap<Key, T>::const_key_value_iterator QMap::keyValueBegin() const

Renvoie un itérateur constant de type STL pointant vers la première entrée de la table.

Voir également keyValueEnd().

QMap<Key, T>::key_value_iterator QMap::keyValueEnd()

Renvoie un itérateur de type STL pointant vers l'entrée imaginaire située après la dernière entrée de la table.

Voir aussi ` keyValueBegin()`.

QMap<Key, T>::const_key_value_iterator QMap::keyValueEnd() const

Renvoie un itérateur const de type STL pointant vers l'entrée imaginaire située après la dernière entrée de la table.

Voir également keyValueBegin().

QList<Key> QMap::keys() const

Renvoie une liste contenant toutes les clés de la table, classées par ordre croissant.

L'ordre est garanti d'être le même que celui utilisé par la fonction values().

Cette fonction crée une nouvelle liste, en temps linéaire. La consommation de temps et de mémoire que cela implique peut être évitée en itérant de ` keyBegin()` à ` keyEnd()`.

Voir également values() et key().

QList<Key> QMap::keys(const T &value) const

Renvoie une liste contenant toutes les clés associées à la valeur value, classées par ordre croissant.

Cette fonction peut être lente (temps linéaire), car la structure de données interne d'QMap est optimisée pour une recherche rapide par clé, et non par valeur.

Il s'agit d'une fonction surchargée.

T &QMap::last()

Renvoie une référence à la dernière valeur de la table, c'est-à-dire la valeur associée à la clé la plus grande. Cette fonction suppose que la table n'est pas vide.

Lorsqu’elle est appelée en mode non partagé (ou dans sa version `const`), cette fonction s’exécute en temps constant.

Voir également first(), lastKey() et isEmpty().

const T &QMap::last() const

Il s'agit d'une fonction surchargée.

const Key &QMap::lastKey() const

Renvoie une référence à la clé la plus grande de la table. Cette fonction suppose que la table n'est pas vide.

Cette opération s'exécute en temps constant.

Voir également firstKey(), last(), keyEnd() et isEmpty().

QMap<Key, T>::iterator QMap::lowerBound(const Key &key)

Renvoie un itérateur pointant vers le premier élément de la carte dont la clé est key. Si la carte ne contient aucun élément dont la clé est key, la fonction renvoie un itérateur pointant vers l'élément le plus proche dont la clé est supérieure.

Voir également upperBound() et find().

QMap<Key, T>::const_iterator QMap::lowerBound(const Key &key) const

Il s'agit d'une fonction surchargée.

QMap<Key, T>::size_type QMap::remove(const Key &key)

Supprime tous les éléments de la carte dont la clé est « key ». Renvoie le nombre d'éléments supprimés : 1 si la clé existe dans la carte, et 0 dans le cas contraire.

Voir aussi clear() et take().

[since 6.1] template <typename Predicate> QMap<Key, T>::size_type QMap::removeIf(Predicate pred)

Supprime de la carte tous les éléments pour lesquels le prédicat pred renvoie « vrai ».

La fonction prend en charge les prédicats qui acceptent soit un argument de type ` QMap<Key, T>::iterator`, soit un argument de type ` std::pair<const Key &, T &>`.

Renvoie le nombre d'éléments supprimés, le cas échéant.

Cette fonction a été introduite dans Qt 6.1.

Voir également clear() et take().

QMap<Key, T>::size_type QMap::size() const

Renvoie le nombre de paires (clé, valeur) contenues dans la table.

Voir également isEmpty() et count().

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

Permutera cette carte avec celle de other. Cette opération est très rapide et ne pose jamais de problème.

T QMap::take(const Key &key)

Supprime l'élément associé à la clé « key » de la carte et renvoie la valeur qui lui est associée.

Si l'élément n'existe pas dans la table, la fonction renvoie simplement une valeur construite par défaut.

Si vous n'utilisez pas la valeur renvoyée, la fonction ` remove()` est plus efficace.

Voir aussi remove().

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

Renvoie une carte STL équivalente à celle-ci : QMap.

[since 6.0] std::map<Key, T> QMap::toStdMap() &&

Remarque : l'appel de cette fonction laissera cette QMap dans un état partiellement formé, dans lequel les seules opérations valides sont la destruction ou l'affectation d'une nouvelle valeur.

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.0.

QMap<Key, T>::iterator QMap::upperBound(const Key &key)

Renvoie un itérateur pointant vers l'élément qui suit immédiatement le dernier élément de la carte dont la clé est « key ». Si la carte ne contient aucun élément dont la clé est « key », la fonction renvoie un itérateur pointant vers l'élément le plus proche dont la clé est supérieure.

Exemple :

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()

Voir également lowerBound() et find().

QMap<Key, T>::const_iterator QMap::upperBound(const Key &key) const

Il s'agit d'une fonction surchargée.

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

Renvoie la valeur associée à la clé « key ».

Si la table ne contient aucun élément avec la clé key, la fonction renvoie defaultValue. Si aucun defaultValue n’est spécifié, la fonction renvoie une valeur construite par défaut.

Voir également key(), values(), contains() et operator[]().

QList<T> QMap::values() const

Renvoie une liste contenant toutes les valeurs de la carte, classées par ordre croissant de leurs clés.

Cette fonction crée une nouvelle liste, en temps linéaire. La consommation de temps et de mémoire que cela implique peut être évitée en itérant de ` keyValueBegin()` à ` keyValueEnd()`.

Voir également keys() et value().

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

Cette opération attribue l'other à cette instance QMap.

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

Attribue la méthode « other » à cette carte et renvoie une référence à celle-ci.

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

Renvoie la valeur associée à la clé key sous forme de référence modifiable.

Si la carte ne contient aucun élément avec la clé « key », la fonction insère une valeur construite par défaut dans la carte avec la clé « key », puis renvoie une référence à celle-ci.

Voir également insert() et value().

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

Identique à ` value()`.

Il s'agit d'une fonction surchargée.

Éléments non membres associés

[since 6.1] template < typename Key, typename T, typename Predicate > qsizetype erase_if(QMap<Key, T> &map, Predicate pred)

Supprime de la carte map tous les éléments pour lesquels le prédicat pred renvoie « vrai ».

La fonction prend en charge les prédicats qui acceptent soit un argument de type ` QMap<Key, T>::iterator`, soit un argument de type ` std::pair<const Key &, T &>`.

Renvoie le nombre d'éléments supprimés, le cas échéant.

Cette fonction a été introduite dans Qt 6.1.

[since 6.8] size_t qHash(const QMap<Key, T> &key, size_t seed = 0)

Renvoie la valeur de hachage de key, en utilisant seed comme graine pour le calcul.

Les types Key et T doivent être pris en charge par qHash().

Cette fonction a été introduite dans Qt 6.8.

bool operator!=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

Renvoie « true » si lhs n'est pas égal à rhs; sinon, renvoie « false ».

Deux cartes sont considérées comme égales si elles contiennent les mêmes paires (clé, valeur).

Cette fonction nécessite que les types de clé et de valeur implémentent l'interface operator==().

Voir aussi operator==().

[since 6.12] bool operator<(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

Renvoie true si lhs est lexicalement inférieur à rhs; sinon, renvoie false.

Cet opérateur est disponible si le type de clé Key et le type mappé T fournissent tous deux l’un des éléments suivants : operator<=>() (en mode C++20), la méthode d’aide compareThreeWay() ou operator<().

Cette fonction a été introduite dans Qt 6.12.

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

Écrit la carte map dans le flux out.

Cette fonction nécessite que les types de clé et de valeur implémentent l'interface operator<<().

Voir également le format des opérateurs QDataStream.

[since 6.12] bool operator<=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

Renvoie true si lhs est lexicalement inférieur ou égal à rhs; sinon, renvoie false.

Cet opérateur est disponible si le type de clé Key et le type mappé T fournissent tous deux l’une des méthodes suivantes : operator<=>() (en mode C++20), compareThreeWay() ou operator<().

Cette fonction a été introduite dans Qt 6.12.

[since 6.12] auto operator<=>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

Compare le contenu de lhs et rhs selon l'ordre lexicographique. Renvoie le résultat du type de catégorie le plus fort applicable.

Remarque : cet opérateur n’est disponible qu’en mode C++20 lorsque le type de clé Key et le type mappé T satisfont tous deux aux exigences du concept std::three_way_comparable ou fournissent operator<(). Dans ce cas, les opérateurs <, <=, > et >= sont synthétisés à partir de operator<=>() et operator==().

Cette fonction a été introduite dans Qt 6.12.

bool operator==(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

Renvoie « true » si « lhs » est égal à « rhs » ; sinon, renvoie « false ».

Deux tables sont considérées comme égales si elles contiennent les mêmes paires (clé, valeur).

Cette fonction nécessite que les types « clé » et « valeur » implémentent l'interface operator==().

Voir également operator!=().

[since 6.12] bool operator>(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

Renvoie true si lhs est lexicalement supérieur à rhs; sinon, renvoie false.

Cet opérateur est disponible si le type de clé Key et le type mappé T fournissent tous deux l’une des méthodes suivantes : operator<=>() (en mode C++20), compareThreeWay() ou operator<().

Cette fonction a été introduite dans Qt 6.12.

[since 6.12] bool operator>=(const QMap<Key, T> &lhs, const QMap<Key, T> &rhs)

Renvoie true si lhs est lexicalement supérieur ou égal à rhs; sinon, renvoie false.

Cet opérateur est disponible si le type de clé Key et le type mappé T fournissent tous deux l’une des méthodes suivantes : operator<=>() (en mode C++20), compareThreeWay() ou operator<().

Cette fonction a été introduite dans Qt 6.12.

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

Lit une carte à partir du flux in et la stocke dans map.

Cette fonction nécessite que les types de clé et de valeur implémentent l'interface operator>>().

Voir également Format des opérateurs QDataStream.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.