Sur cette page

QMap Class

template <typename Key, typename T> class QMap

La classe QMap est une classe modèle qui fournit un tableau associatif. Plus d'informations...

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

Cette classe est comparable à l'égalité.

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

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)
QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)
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. Elle stocke des paires (clé, valeur) et permet une consultation rapide par clé.

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

  • QHash fournit en moyenne des recherches plus rapides que QMap. (Voir la complexité algorithmique pour plus de détails).
  • Lors de l'itération sur un site QHash, les éléments sont ordonné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 operator==() et une fonction globale qHash(Key). Le type de clé d'un QMap doit fournir operator<() spécifiant un ordre total. Depuis Qt 5.8.1, il est également possible d'utiliser un pointeur comme clé, même si l'opérateur<() sous-jacent ne fournit pas d'ordre total.

Voici un exemple de QMap avec QString clés et int valeurs :

QMap<QString, int> map;

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

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

Cela permet d'insérer les trois paires (clé, valeur) suivantes dans la QMap : ("one", 1), ("three", 3) et ("seven", 7). Une autre façon d'insérer des éléments dans la carte est d'utiliser insert() :

map.insert("twelve", 12);

Pour rechercher une valeur, utilisez operator[]() ou 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 certaine clé, utilisez contains() :

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

Il existe également une surcharge 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 operator[]() pour rechercher une clé dans une carte. En effet, operator[]() insère silencieusement un élément dans la carte s'il n'existe aucun élément avec la même clé (sauf si la carte est constante). Par exemple, l'extrait de code suivant créera 1000 é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 une QMap, vous pouvez utiliser un itérateur. QMap fournit des itérateurs de style Java (QMapIterator et QMutableMapIterator) et des itérateurs de style STL (QMap::const_iterator et QMap::iterator). Voici comment itérer sur une QMap<QString, int> à l'aide d'un itérateur de style 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 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.

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

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

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

Si vous ne devez extraire que les valeurs d'une carte (et non les clés), vous pouvez également utiliser la méthode "range-based for" :

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 manières. L'une d'entre elles consiste à appeler remove(), ce qui a pour effet de supprimer tout élément correspondant à la clé donnée. Une autre méthode consiste à utiliser QMutableMapIterator::remove(). En outre, vous pouvez effacer toute la carte en utilisant clear().

Les types de données clé et valeur 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 laissera pas, par exemple, stocker un QWidget en tant que valeur ; à la place, stockez un QWidget *. En outre, le type de clé de QMap doit fournir operator<(). QMap l'utilise pour garder ses éléments triés et suppose que deux clés x et y sont équivalentes si ni x < y ni y < x ne sont vraies.

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 l'exemple, nous commençons par comparer les noms des employés. S'ils sont égaux, nous comparons leurs dates de naissance pour les départager.

Voir aussi QMapIterator, QMutableMapIterator, QHash, et QSet.

Documentation sur les types de membres

QMap::ConstIterator

Qt-style synonyme de QMap::const_iterator.

QMap::Iterator

Qt-style synonyme de QMap::iterator.

QMap::const_key_value_iterator

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

QMap::const_key_value_iterator est essentiellement le même que QMap::const_iterator à la différence que operator*() renvoie une paire clé/valeur au lieu d'une valeur.

Voir également QKeyValueIterator.

[alias] QMap::difference_type

Typedef pour ptrdiff_t. Fourni pour la compatibilité STL.

[alias] QMap::key_type

Typedef pour Key. Fourni pour la compatibilité STL.

QMap::key_value_iterator

Le typage QMap::key_value_iterator fournit un itérateur de style STL pour QMap.

QMap::key_value_iterator est essentiellement le même que QMap::iterator à la différence que operator*() renvoie une paire clé/valeur au lieu d'une valeur.

Voir également QKeyValueIterator.

[alias] QMap::mapped_type

Typedef pour T. Fourni pour la compatibilité STL.

[alias] QMap::size_type

Typedef pour int. Fourni pour la compatibilité STL.

Documentation des fonctions membres

QMap::QMap()

Construit une carte vide.

Voir aussi clear().

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

Construit une copie de other.

Voir aussi toStdMap().

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

Construit une carte avec une copie de chacun des éléments de la liste d'initialisation list.

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

Construit une carte en se déplaçant à partir de other.

Voir aussi toStdMap().

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

Construit une copie de other.

Cette opération s'effectue en temps constant, car la QMap est implicitement partagée. Le retour d'une QMap à partir d'une fonction est donc très rapide. Si une instance partagée est modifiée, elle sera copiée (copy-on-write), ce qui prend un temps linéaire.

Voir aussi operator=.

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

Move-construit une instance de QMap.

[default] QMap::~QMap()

Détruit la carte. Les références aux valeurs de la carte et tous les itérateurs sur cette carte deviennent invalides.

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

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

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

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

Renvoie un objet de plage qui permet d'itérer sur cette carte sous forme de paires clé/valeur. Par exemple, cet objet plage peut être utilisé dans une boucle for basée sur la 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 des références à celles de la carte. Plus précisément, la modification de la valeur modifiera la carte elle-même.

Ces fonctions ont été introduites dans Qt 6.4.

Voir aussi QKeyValueIterator.

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

Renvoie un itérateur de style STL pointant sur le premier élément de la carte.

Voir aussi 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 constant de style STL pointant sur le premier élément de la carte.

Voir aussi begin() et cend().

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

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

Voir aussi 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 constant de style STL pointant sur le premier élément de la carte.

Voir aussi begin() et constEnd().

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

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

Voir aussi constBegin() et end().

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

Renvoie un itérateur constant pointant vers l'élément avec la clé key dans la carte.

Si la carte 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 constant de style STL pointant sur la première entrée de la carte.

Voir aussi keyValueBegin().

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

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

Voir aussi constKeyValueBegin().

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

Renvoie true si la carte contient un élément avec la clé key; sinon, renvoie false.

Voir aussi 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 pour la compatibilité STL. Elle est équivalente à isEmpty() et renvoie la valeur true si la carte est vide, sinon elle renvoie la valeur false.

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

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

Voir aussi 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 la plage 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) indiquée par l'itérateur pos et renvoie un itérateur vers l'élément suivant de la carte.

Remarque : l'itérateur pos doit être valide et déréférençable.

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) désignées par l'itérateur [first, last). Renvoie un itérateur vers l'élément de la carte qui suit 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 avec la clé key dans la carte.

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

Voir aussi 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 carte, c'est-à-dire la valeur associée à la plus petite clé. Cette fonction suppose que la carte n'est pas vide.

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

Voir aussi 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.

Elle s'exécute en temps constant.

Voir aussi lastKey(), first(), keyBegin() et isEmpty().

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

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

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

Si map est partagé, les éléments seront copiés à la place.

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 la valeur 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.

Retourne un itérateur pointant vers l'élément nouveau/mise à 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 et la valeur value et avec l'indice pos suggérant où effectuer l'insertion.

Si constBegin() est utilisé comme indice, il indique que key est inférieur à n'importe quelle clé de la carte, tandis que constEnd() suggère que key est (strictement) supérieur à n'importe quelle clé de la carte. Sinon, l'indice doit remplir la condition (pos - 1).key() < key <= pos.key(). Si l'indice pos est erroné, il est ignoré 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'indice est correct et que la carte n'est pas partagée, l'insertion s'exécute en un 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(), puisque constEnd() - 1 (qui est nécessaire pour vérifier si l'indice est valide) nécessite un temps logarithmique.

Remarque : soyez prudent avec l'indice. Fournir un itérateur provenant d'une ancienne instance partagée peut provoquer un crash, mais il y a aussi le risque de corrompre silencieusement à la fois la carte et la carte pos.

Renvoie un itérateur pointant vers l'élément nouveau/mise à 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 aussi size().

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

Renvoie la première clé avec la valeur value, ou defaultKey si la carte ne contient aucun élément avec la valeur value. Si aucun defaultKey n'est fourni, 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 aussi value() et keys().

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

Renvoie un itérateur constant de style STL pointant sur la première clé de la carte.

Voir aussi keyEnd() et firstKey().

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

Renvoie un itérateur constant de style STL pointant vers l'élément imaginaire situé après la dernière clé de la carte.

Voir aussi keyBegin() et lastKey().

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

Renvoie un itérateur de style STL pointant sur la première entrée de la carte.

Voir aussi keyValueEnd().

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

Renvoie un itérateur constant de style STL pointant sur la première entrée de la carte.

Voir aussi keyValueEnd().

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

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

Voir aussi keyValueBegin().

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

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

Voir aussi keyValueBegin().

QList<Key> QMap::keys() const

Renvoie une liste contenant toutes les clés de la carte dans l'ordre croissant.

L'ordre est garanti comme étant le même que celui utilisé par values().

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

Voir aussi values() et key().

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

Renvoie une liste contenant toutes les clés associées à la valeur value dans l'ordre croissant.

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.

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

T &QMap::last()

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

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

Voir aussi 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 plus grande clé de la carte. Cette fonction suppose que la carte n'est pas vide.

Elle s'exécute en temps constant.

Voir aussi firstKey(), last(), keyEnd() et isEmpty().

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

Renvoie un itérateur pointant vers le premier élément avec la clé key dans la carte. Si la carte ne contient aucun élément avec la clé key, la fonction renvoie un itérateur vers l'élément le plus proche avec une clé plus grande.

Voir aussi 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 de la carte tous les éléments ayant la clé key. Renvoie le nombre d'éléments supprimés, qui sera égal à 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 la valeur "true".

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

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

Cette fonction a été introduite dans Qt 6.1.

Voir aussi clear() et take().

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

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

Voir aussi isEmpty() et count().

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

Remplace cette carte par other. Cette opération est très rapide et n'échoue jamais.

T QMap::take(const Key &key)

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

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

Si vous n'utilisez pas la valeur de retour, remove() est plus efficace.

Voir également remove().

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

Retourne une carte STL équivalente à cette QMap.

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

Remarque : l'appel de cette fonction laissera le site QMap dans un état partiellement formé, dans lequel les seules opérations valables sont la destruction ou l'attribution 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 avec la clé key dans la carte. Si la carte ne contient aucun élément avec la clé key, la fonction renvoie un itérateur vers l'élément le plus proche avec une clé plus grande.

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 aussi 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 carte 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 aussi key(), values(), contains() et operator[]().

QList<T> QMap::values() const

Renvoie une liste contenant toutes les valeurs de la carte, dans l'ordre croissant de leurs clés.

Cette fonction crée une nouvelle liste en temps linéaire. L'utilisation du temps et de la mémoire que cela implique peut être évitée en itérant de keyValueBegin() à keyValueEnd().

Voir aussi keys() et value().

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

Move-assigne other à cette instance QMap.

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

Attribue other à cette carte et renvoie une référence à cette carte.

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

Renvoie la valeur associée à la clé key sous la forme d'une 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, et renvoie une référence à cette valeur.

Voir aussi insert() et value().

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

Identique à value().

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

Non-membres apparenté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 la valeur "true".

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

Elle 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 pour key, en utilisant seed comme base de 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 les types clé et valeur pour implémenter operator==().

Voir également operator==().

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 clé et valeur soient implémentés operator<<().

Voir aussi Format des opérateurs QDataStream.

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

Renvoie true si lhs est é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 les types clé et valeur pour implémenter operator==().

Voir également operator!=().

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

Lit une carte du flux in dans map.

Cette fonction nécessite que les types clé et valeur soient implémentés operator>>().

Voir aussi 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.