QMultiHash Class
template <typename Key, typename T> class QMultiHashLa classe QMultiHash fournit une table de hachage multivaluée. Plus d'informations...
| En-tête : | #include <QMultiHash> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
- Liste de tous les membres, y compris les membres hérités
- QMultiHash fait partie des classes implicitement partagées.
Cette classe est comparable à l'égalité.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Types publics
| class | const_iterator |
| class | iterator |
| class | key_iterator |
| const_key_value_iterator | |
| key_value_iterator |
Fonctions publiques
| QMultiHash() | |
| QMultiHash(const QHash<Key, T> &other) | |
| QMultiHash(std::initializer_list<std::pair<Key, T>> list) | |
| QMultiHash(InputIterator begin, InputIterator end) | |
(since 6.4) auto | asKeyValueRange() && |
(since 6.4) auto | asKeyValueRange() & |
(since 6.4) auto | asKeyValueRange() const && |
(since 6.4) auto | asKeyValueRange() const & |
| QMultiHash<Key, T>::iterator | begin() |
| QMultiHash<Key, T>::const_iterator | begin() const |
| QMultiHash<Key, T>::const_iterator | cbegin() const |
| QMultiHash<Key, T>::const_iterator | cend() const |
| void | clear() |
| QMultiHash<Key, T>::const_iterator | constBegin() const |
| QMultiHash<Key, T>::const_iterator | constEnd() const |
| QMultiHash<Key, T>::const_iterator | constFind(const Key &key, const T &value) const |
| QMultiHash<Key, T>::const_key_value_iterator | constKeyValueBegin() const |
| QMultiHash<Key, T>::const_key_value_iterator | constKeyValueEnd() const |
| bool | contains(const Key &key, const T &value) const |
| qsizetype | count(const Key &key, const T &value) const |
| QMultiHash<Key, T>::iterator | emplace(Key &&key, Args &&... args) |
| QMultiHash<Key, T>::iterator | emplace(const Key &key, Args &&... args) |
| QMultiHash<Key, T>::iterator | emplaceReplace(Key &&key, Args &&... args) |
| QMultiHash<Key, T>::iterator | emplaceReplace(const Key &key, Args &&... args) |
| QMultiHash<Key, T>::iterator | end() |
| QMultiHash<Key, T>::const_iterator | end() const |
| std::pair<QMultiHash<Key, T>::iterator, QMultiHash<Key, T>::iterator> | equal_range(const Key &key) |
| std::pair<QMultiHash<Key, T>::const_iterator, QMultiHash<Key, T>::const_iterator> | equal_range(const Key &key) const |
| QMultiHash<Key, T>::iterator | erase(QMultiHash<Key, T>::const_iterator pos) |
| QMultiHash<Key, T>::iterator | find(const Key &key, const T &value) |
| QMultiHash<Key, T>::const_iterator | find(const Key &key, const T &value) const |
| QMultiHash<Key, T>::iterator | insert(const Key &key, const T &value) |
(since 6.11) QMultiHash<Key, T>::iterator | insert(Key &&key, T &&value) |
(since 6.11) QMultiHash<Key, T>::iterator | insert(Key &&key, const T &value) |
(since 6.11) QMultiHash<Key, T>::iterator | insert(const Key &key, T &&value) |
| Key | key(const T &value) const |
| Key | key(const T &value, const Key &defaultKey) const |
| QMultiHash<Key, T>::key_iterator | keyBegin() const |
| QMultiHash<Key, T>::key_iterator | keyEnd() const |
| QMultiHash<Key, T>::key_value_iterator | keyValueBegin() |
| QMultiHash<Key, T>::const_key_value_iterator | keyValueBegin() const |
| QMultiHash<Key, T>::key_value_iterator | keyValueEnd() |
| QMultiHash<Key, T>::const_key_value_iterator | keyValueEnd() const |
| QList<Key> | keys() const |
| qsizetype | remove(const Key &key) |
| qsizetype | remove(const Key &key, const T &value) |
(since 6.1) qsizetype | removeIf(Predicate pred) |
| QMultiHash<Key, T>::iterator | replace(const Key &key, const T &value) |
| void | swap(QMultiHash<Key, T> &other) |
| T | take(const Key &key) |
| QList<Key> | uniqueKeys() const |
(since 6.0) QMultiHash<Key, T> & | unite(const QHash<Key, T> &other) |
| QMultiHash<Key, T> & | unite(const QMultiHash<Key, T> &other) |
| T | value(const Key &key) const |
| T | value(const Key &key, const T &defaultValue) const |
| QList<T> | values() const |
| QList<T> | values(const Key &key) const |
| QMultiHash<Key, T> | operator+(const QMultiHash<Key, T> &other) const |
| QMultiHash<Key, T> & | operator+=(const QMultiHash<Key, T> &other) |
| T & | operator[](const Key &key) |
Non-membres apparentés
(since 6.1) qsizetype | erase_if(QMultiHash<Key, T> &hash, Predicate pred) |
| size_t | qHash(const QMultiHash<Key, T> &key, size_t seed = 0) |
| bool | operator!=(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs) |
| QDataStream & | operator<<(QDataStream &out, const QMultiHash<Key, T> &hash) |
| bool | operator==(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs) |
| QDataStream & | operator>>(QDataStream &in, QMultiHash<Key, T> &hash) |
Description détaillée
QMultiHash<Key, T> est l'une des classes de conteneurs génériques de Qt. Elle fournit une table de hachage qui autorise plusieurs valeurs pour la même clé.
QMultiHash reflète en grande partie l'API de QHash. Par exemple, vous pouvez utiliser isEmpty() pour tester si la table de hachage est vide, et vous pouvez parcourir une QMultiHash en utilisant les classes d'itérateurs de QHash(par exemple, QHashIterator). Mais contrairement à QHash, il fournit une fonction insert() qui permet l'insertion de plusieurs éléments avec la même clé. La fonction replace() correspond à QHash::insert(). Il fournit également des fonctions pratiques operator+() et operator+=().
Contrairement à QMultiMap, QMultiHash ne permet pas d'ordonner les éléments insérés. La seule garantie est que les éléments qui partagent la même clé apparaîtront consécutivement, de la valeur la plus récemment insérée à la moins récemment insérée.
Exemple :
QMultiHash<QString, int> hash1, hash2, hash3; hash1.insert("plenty", 100); hash1.insert("plenty", 2000); // hash1.size() == 2 hash2.insert("plenty", 5000); // hash2.size() == 1 hash3 = hash1 + hash2; // hash3.size() == 3
Contrairement à QHash, QMultiHash ne fournit pas d'opérateur[]. Utilisez value() ou replace() si vous souhaitez accéder à l'élément le plus récemment inséré avec une certaine clé.
Si vous souhaitez récupérer toutes les valeurs d'une seule clé, vous pouvez utiliser values(const Key &key), qui renvoie un QList<T> :
QList<int> values = hash.values("plenty"); for (auto i : std::as_const(values)) cout << i << endl;
Les éléments qui partagent la même clé sont disponibles du plus récemment inséré au moins récemment inséré.
Une approche plus efficace consiste à appeler find() pour obtenir l'itérateur de style STL pour le premier élément avec une clé et à itérer à partir de là :
auto i = hash.constFind("plenty"); while (i != hash.cend() && i.key() == "plenty") { cout << i.value() << endl; ++i; }
Les types de données clé et valeur de QMultiHash doivent être des types de données assignables. Vous ne pouvez pas, par exemple, stocker un QWidget comme valeur, mais plutôt un QWidget *. En outre, le type de clé de QMultiHash doit fournir operator==(), et il doit également y avoir une fonction qHash() dans l'espace de noms du type qui renvoie une valeur de hachage pour un argument du type de la clé. Voir la documentation QHash pour plus de détails.
Voir également QHash, QHashIterator, QMutableHashIterator, et QMultiMap.
Documentation sur les types de membres
QMultiHash::const_key_value_iterator
Le typedef QMultiHash::const_key_value_iterator fournit un itérateur constant de style STL pour QMultiHash.
QMultiHash::const_key_value_iterator est essentiellement le même que QMultiHash::const_iterator à la différence que operator*() renvoie une paire clé/valeur au lieu d'une valeur.
Voir également QKeyValueIterator.
QMultiHash::key_value_iterator
Le typage QMultiHash::key_value_iterator fournit un itérateur de style STL pour QMultiHash.
QMultiHash::key_value_iterator est essentiellement le même que QMultiHash::iterator à la différence que operator*() renvoie une paire clé/valeur au lieu d'une valeur.
Voir également QKeyValueIterator.
Documentation des fonctions membres
[noexcept] QMultiHash::QMultiHash()
Construit un hachage vide.
[explicit] QMultiHash::QMultiHash(const QHash<Key, T> &other)
Construit une copie de other (qui peut être un QHash ou un QMultiHash).
QMultiHash::QMultiHash(std::initializer_list<std::pair<Key, T>> list)
Construit un multi-hash avec une copie de chacun des éléments de la liste d'initialisation list.
template <typename InputIterator> QMultiHash::QMultiHash(InputIterator begin, InputIterator end)
Construit un multi-hash avec une copie de chacun des éléments de l'intervalle de l'itérateur [begin, end). Soit les éléments itérés par la plage doivent être des objets avec des membres de données first et second (comme std::pair), convertibles en Key et T respectivement ; soit les itérateurs doivent avoir des fonctions membres key() et value(), renvoyant une clé convertible en Key et une valeur convertible en T respectivement.
[since 6.4] auto QMultiHash::asKeyValueRange() &
[since 6.4] auto QMultiHash::asKeyValueRange() const &
[since 6.4] auto QMultiHash::asKeyValueRange() &&
[since 6.4] auto QMultiHash::asKeyValueRange() const &&
Renvoie un objet de plage qui permet d'itérer sur ce hachage 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 :
QMultiHash<QString, int> hash; hash.insert("January", 1); hash.insert("February", 2); // ... hash.insert("December", 12); for (auto [key, value] : hash.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 du hachage. Plus précisément, la modification de la valeur modifiera le hachage lui-même.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Ces fonctions ont été introduites dans Qt 6.4.
Voir aussi QKeyValueIterator.
QMultiHash<Key, T>::iterator QMultiHash::begin()
Renvoie un itérateur de style STL pointant sur le premier élément du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi constBegin() et end().
[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::begin() const
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Il s'agit d'une fonction surchargée.
[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::cbegin() const
Renvoie un itérateur constant de style STL pointant sur le premier élément du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::cend() const
Renvoie un itérateur constant de style STL pointant vers l'élément imaginaire situé après le dernier élément du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
[noexcept(...)] void QMultiHash::clear()
Supprime tous les éléments du hachage et libère toute la mémoire utilisée par celui-ci.
Remarque : cette fonction est noexcept lorsque std::is_nothrow_destructible<Node>::value est true.
Voir également remove().
[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::constBegin() const
Renvoie un itérateur constant de style STL pointant sur le premier élément du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi begin() et constEnd().
[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::constEnd() const
Renvoie un itérateur constant de style STL pointant vers l'élément imaginaire situé après le dernier élément du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi constBegin() et end().
[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::constFind(const Key &key, const T &value) const
Renvoie un itérateur pointant vers l'élément contenant key et value dans le hachage.
Si le hachage ne contient aucun élément de ce type, la fonction renvoie constEnd().
Attention : Les itérateurs/références renvoyés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::constKeyValueBegin() const
Renvoie un itérateur constant de style STL pointant sur la première entrée du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi keyValueBegin().
[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::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 du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi constKeyValueBegin().
[noexcept] bool QMultiHash::contains(const Key &key, const T &value) const
Renvoie true si le hachage contient un élément avec key et value; sinon, renvoie false.
Voir aussi count().
[noexcept] qsizetype QMultiHash::count(const Key &key, const T &value) const
Renvoie le nombre d'éléments portant les noms key et value.
Voir aussi contains().
template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplace(const Key &key, Args &&... args)
template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplace(Key &&key, Args &&... args)
Insère un nouvel élément dans le conteneur. Ce nouvel élément est construit sur place en utilisant args comme arguments pour sa construction.
S'il existe déjà un élément avec la même clé dans le hachage, cette fonction en créera simplement un nouveau. (Ce comportement est différent de celui de replace(), qui écrase la valeur d'un élément existant).
Renvoie un itérateur pointant vers le nouvel élément.
Attention : Les itérateurs/références renvoyés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi insert.
template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplaceReplace(const Key &key, Args &&... args)
template <typename... Args> QMultiHash<Key, T>::iterator QMultiHash::emplaceReplace(Key &&key, Args &&... args)
Insère un nouvel élément dans le conteneur. Ce nouvel élément est construit sur place en utilisant args comme arguments pour sa construction.
S'il existe déjà un élément avec la même clé dans le hachage, la valeur de cet élément est remplacée par une valeur construite à partir de args.
Retourne un itérateur pointant vers le nouvel élément.
Attention : Les itérateurs/références renvoyés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi replace et emplace.
[noexcept] QMultiHash<Key, T>::iterator QMultiHash::end()
Renvoie un itérateur de style STL pointant vers l'élément imaginaire situé après le dernier élément du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi begin() et constEnd().
[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::end() const
Il s'agit d'une fonction surchargée.
std::pair<QMultiHash<Key, T>::iterator, QMultiHash<Key, T>::iterator> QMultiHash::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. Si la plage est vide, les deux itérateurs seront égaux à end().
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
[noexcept] std::pair<QMultiHash<Key, T>::const_iterator, QMultiHash<Key, T>::const_iterator> QMultiHash::equal_range(const Key &key) const
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Il s'agit d'une fonction surchargée.
QMultiHash<Key, T>::iterator QMultiHash::erase(QMultiHash<Key, T>::const_iterator pos)
Supprime la paire (clé, valeur) associée à l'itérateur pos du hachage et renvoie un itérateur vers l'élément suivant du hachage.
Cette fonction n'oblige jamais QMultiHash à réorganiser sa structure de données interne. Cela signifie qu'elle peut être appelée en toute sécurité pendant l'itération et qu'elle n'affectera pas l'ordre des éléments dans le hachage. Par exemple, cette fonction peut être appelée en toute sécurité pendant l'exécution d'une requête :
QMultiHash<QObject *, int> objectHash; //... QMultiHash<QObject *, int>::iterator i = objectHash.find(obj); while (i != objectHash.end() && i.key() == obj) { if (i.value() == 0) { i = objectHash.erase(i); } else { ++i; } }
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi remove(), take(), et find().
QMultiHash<Key, T>::iterator QMultiHash::find(const Key &key, const T &value)
Renvoie un itérateur pointant vers l'élément avec les codes key et value. Si le hachage ne contient aucun élément de ce type, la fonction renvoie end().
Si le hachage contient plusieurs éléments avec key et value, l'itérateur retourné pointe vers l'élément le plus récemment inséré.
Attention : Les itérateurs/références renvoyés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
[noexcept] QMultiHash<Key, T>::const_iterator QMultiHash::find(const Key &key, const T &value) const
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Il s'agit d'une fonction surchargée.
QMultiHash<Key, T>::iterator QMultiHash::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 même clé dans le hachage, cette fonction en créera simplement un nouveau. (Ce comportement est différent de celui de replace(), qui écrase la valeur d'un élément existant).
Renvoie un itérateur pointant vers le nouvel élément.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi replace().
[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(const Key &key, T &&value)
[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(Key &&key, const T &value)
[since 6.11] QMultiHash<Key, T>::iterator QMultiHash::insert(Key &&key, T &&value)
Ces fonctions ont été introduites dans Qt 6.11.
[noexcept] Key QMultiHash::key(const T &value) const
[noexcept] Key QMultiHash::key(const T &value, const Key &defaultKey) const
Renvoie la première clé associée à value. Si le hachage ne contient aucun élément associé à value, il renvoie defaultKey, ou une clé construite par défaut si ce paramètre n'a pas été fourni.
Cette fonction peut être lente(temps linéaire), car la structure de données interne de QMultiHash est optimisée pour une recherche rapide par clé, et non par valeur.
[noexcept] QMultiHash<Key, T>::key_iterator QMultiHash::keyBegin() const
Renvoie un itérateur constant de style STL pointant sur la première clé du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi keyEnd().
[noexcept] QMultiHash<Key, T>::key_iterator QMultiHash::keyEnd() const
Renvoie un itérateur constant de style STL pointant vers l'élément imaginaire situé après la dernière clé du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi keyBegin().
[noexcept] QMultiHash<Key, T>::key_value_iterator QMultiHash::keyValueBegin()
Renvoie un itérateur de style STL pointant sur la première entrée du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi keyValueEnd().
[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::keyValueBegin() const
Renvoie un itérateur constant de style STL pointant sur la première entrée du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi keyValueEnd().
[noexcept] QMultiHash<Key, T>::key_value_iterator QMultiHash::keyValueEnd()
Renvoie un itérateur de style STL pointant vers l'entrée imaginaire située après la dernière entrée du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi keyValueBegin().
[noexcept] QMultiHash<Key, T>::const_key_value_iterator QMultiHash::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 du hachage.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi keyValueBegin().
QList<Key> QMultiHash::keys() const
Renvoie une liste contenant toutes les clés du hachage, dans un ordre arbitraire. Les clés qui apparaissent plusieurs fois dans le hachage apparaissent également plusieurs fois dans la liste.
L'ordre est garanti être 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().
qsizetype QMultiHash::remove(const Key &key)
Supprime tous les éléments qui ont la valeur key dans le hachage. Renvoie le nombre d'éléments supprimés.
Voir aussi remove(const Key &key, const T &value).
qsizetype QMultiHash::remove(const Key &key, const T &value)
Supprime du hachage tous les éléments qui ont la valeur key et la valeur value. Renvoie le nombre d'éléments supprimés.
Voir aussi remove().
[since 6.1] template <typename Predicate> qsizetype QMultiHash::removeIf(Predicate pred)
Supprime du hachage multi 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 QMultiHash<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.
QMultiHash<Key, T>::iterator QMultiHash::replace(const Key &key, const T &value)
Insère un nouvel élément avec l'adresse key et la valeur value.
S'il existe déjà un élément avec la valeur key, la valeur de cet élément est remplacée par value.
S'il existe plusieurs éléments avec la valeur key, la valeur de l'élément le plus récemment inséré est remplacée par value.
Renvoie un itérateur pointant vers l'élément nouveau/mise à jour.
Attention : Les itérateurs/références retournés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Voir aussi insert().
[noexcept] void QMultiHash::swap(QMultiHash<Key, T> &other)
Échange ce multi-hash avec other. Cette opération est très rapide et n'échoue jamais.
T QMultiHash::take(const Key &key)
Retire l'élément avec le key du hachage et renvoie la valeur qui lui est associée.
Si l'élément n'existe pas dans le hachage, la fonction renvoie simplement une valeur construite par défaut. S'il y a plusieurs éléments pour key dans le hachage, seul le dernier inséré est supprimé.
Si vous n'utilisez pas la valeur de retour, remove() est plus efficace.
Voir également remove().
QList<Key> QMultiHash::uniqueKeys() const
Renvoie une liste contenant toutes les clés de la carte. Les clés qui apparaissent plusieurs fois dans la carte n'apparaissent qu'une seule fois dans la liste retournée.
Voir aussi keys() et values().
[since 6.0] QMultiHash<Key, T> &QMultiHash::unite(const QHash<Key, T> &other)
Insère tous les éléments du hachage other dans ce hachage et renvoie une référence à ce hachage.
Cette fonction a été introduite dans Qt 6.0.
Voir aussi insert().
QMultiHash<Key, T> &QMultiHash::unite(const QMultiHash<Key, T> &other)
Insère tous les éléments du hachage other dans ce hachage et renvoie une référence à ce hachage.
Voir aussi insert().
[noexcept] T QMultiHash::value(const Key &key) const
[noexcept] T QMultiHash::value(const Key &key, const T &defaultValue) const
Renvoie la valeur associée à key.
Si le hachage ne contient aucun élément avec key, la fonction renvoie defaultValue, ou une valeur construite par défaut si ce paramètre n'a pas été fourni.
S'il y a plusieurs éléments pour key dans le hachage, la valeur de l'élément le plus récemment inséré est renvoyée.
QList<T> QMultiHash::values() const
Renvoie une liste contenant toutes les valeurs du hachage, dans un ordre arbitraire. Si une clé est associée à plusieurs valeurs, toutes ses valeurs figureront dans la liste, et pas seulement la plus récente.
L'ordre est garanti être le même que celui utilisé par keys().
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().
QList<T> QMultiHash::values(const Key &key) const
Renvoie une liste de toutes les valeurs associées à key, de la plus récente à la moins récente.
Il s'agit d'une fonction surchargée.
Voir aussi count() et insert().
QMultiHash<Key, T> QMultiHash::operator+(const QMultiHash<Key, T> &other) const
Renvoie un hachage qui contient tous les éléments de ce hachage en plus de tous les éléments de other. Si une clé est commune aux deux hachages, le hachage résultant contiendra la clé plusieurs fois.
Voir également operator+=().
QMultiHash<Key, T> &QMultiHash::operator+=(const QMultiHash<Key, T> &other)
Insère tous les éléments du hachage other dans ce hachage et renvoie une référence à ce hachage.
Voir aussi unite() et insert().
T &QMultiHash::operator[](const Key &key)
Renvoie la valeur associée à key sous la forme d'une référence modifiable.
Si le hachage ne contient aucun élément avec key, la fonction insère une valeur construite par défaut dans le hachage avec key, et renvoie une référence à cette valeur.
Si le hachage contient plusieurs éléments avec key, cette fonction renvoie une référence à la dernière valeur insérée.
Attention : Les itérateurs/références renvoyés doivent être considérés comme invalidés la prochaine fois que vous appellerez une fonction non-const sur le hachage, ou lorsque le hachage sera détruit.
Non-membres apparentés
[since 6.1] template <
typename Key,
typename T,
typename Predicate
>
qsizetype erase_if(QMultiHash<Key, T> &hash, Predicate pred)
Supprime tous les éléments pour lesquels le prédicat pred renvoie la valeur "true" du multi-hachage hash.
La fonction prend en charge les prédicats qui prennent soit un argument de type QMultiHash<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.
[noexcept(...)] template <typename Key, typename T> size_t qHash(const QMultiHash<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().
Remarque : cette fonction est noexcept lorsque noexcept(qHash(std::declval<Key&>())) && noexcept(qHash(std::declval<T&>())) est true.
[noexcept] bool operator!=(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)
Renvoie true si le multihash lhs n'est pas égal au multihash rhs; sinon, renvoie false.
Deux multihashs sont considérés comme égaux s'ils contiennent les mêmes paires (clé, valeur).
Cette fonction nécessite le type de valeur pour mettre en œuvre operator==().
Voir aussi operator==().
template <typename Key, typename T> QDataStream &operator<<(QDataStream &out, const QMultiHash<Key, T> &hash)
Écrit le hachage hash dans le flux out.
Cette fonction nécessite que les types clé et valeur soient implémentés operator<<().
Voir aussi Serializing Qt Data Types (Sérialisation des types de données Qt).
[noexcept] bool operator==(const QMultiHash<Key, T> &lhs, const QMultiHash<Key, T> &rhs)
Renvoie true si le multihash lhs est égal au multihash rhs; sinon, renvoie false.
Deux multihashs sont considérés comme égaux s'ils contiennent les mêmes paires (clé, valeur).
Cette fonction nécessite le type de valeur pour implémenter operator==().
Voir aussi operator!=().
template <typename Key, typename T> QDataStream &operator>>(QDataStream &in, QMultiHash<Key, T> &hash)
Lit un hachage du flux in dans hash.
Cette fonction nécessite les types clé et valeur pour implémenter operator>>().
Voir aussi Serializing Qt Data Types (Sérialisation des types de données Qt).
© 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.