std:: unordered_map
|
Défini dans l'en-tête
<unordered_map>
|
||
|
template
<
class
Key,
|
(1) | (depuis C++11) |
|
namespace
pmr
{
template
<
|
(2) | (depuis C++17) |
std::unordered_map
est un conteneur associatif qui contient des paires clé-valeur avec des clés uniques. La recherche, l'insertion et la suppression d'éléments ont une complexité temporelle moyenne constante.
En interne, les éléments ne sont pas triés dans un ordre particulier, mais organisés en compartiments. Le compartiment dans lequel un élément est placé dépend entièrement du hachage de sa clé. Les clés avec le même code de hachage apparaissent dans le même compartiment. Cela permet un accès rapide aux éléments individuels, car une fois le hachage calculé, il fait référence au compartiment contenant l'élément.
Deux clés sont considérées comme équivalentes si le prédicat d'égalité des clés de la carte renvoie vrai lorsqu'il reçoit ces clés. Si deux clés sont équivalentes, la fonction de hachage doit renvoyer la même valeur pour les deux clés.
std::unordered_map
satisfait aux exigences de
Container
,
AllocatorAwareContainer
,
UnorderedAssociativeContainer
.
Toutes les fonctions membres de
std::unordered_map
sont
constexpr
: il est possible de créer et d'utiliser des objets
std::unordered_map
lors de l'évaluation d'une expression constante.
Cependant, les objets
|
(depuis C++26) |
Sommaire
Invalidation des itérateurs
Notes
Paramètres du modèle
Types membres
Fonctions membres
Fonctions non membres
Notes
Exemple
Exécuter ce code
#include <iostream> #include <string> #include <unordered_map> int main() { // Créer un unordered_map de trois chaînes (qui mappent vers des chaînes) std::unordered_map<std::string, std::string> u = { {"RED", "#FF0000"}, {"GREEN", "#00FF00"}, {"BLUE", "#0000FF"} }; // Fonction lambda utilitaire pour afficher les paires clé-valeur auto print_key_value = [](const auto& key, const auto& value) { std::cout << "Key:[" << key << "] Value:[" << value << "]\n"; }; std::cout << "Itérer et afficher les paires clé-valeur de unordered_map, en étant\n" "explicite avec leurs types:\n"; for (const std::pair<const std::string, std::string>& n : u) print_key_value(n.first, n.second); std::cout << "\nItérer et afficher les paires clé-valeur en utilisant la liaison structurée C++17:\n"; for (const auto& [key, value] : u) print_key_value(key, value); // Ajouter deux nouvelles entrées à l'unordered_map u["BLACK"] = "#000000"; u["WHITE"] = "#FFFFFF"; std::cout << "\nAfficher les valeurs par clé:\n" "Le HEX de la couleur ROUGE est:[" << u["RED"] << "]\n" "Le HEX de la couleur NOIR est:[" << u["BLACK"] << "]\n\n"; std::cout << "Utiliser l'opérateur[] avec une clé inexistante pour insérer une nouvelle paire clé-valeur:\n"; print_key_value("new_key", u["new_key"]); std::cout << "\nItérer et afficher les paires clé-valeur, en utilisant `auto`;\n" "new_key fait maintenant partie des clés de la map:\n"; for (const auto& n : u) print_key_value(n.first, n.second); } Sortie possible : Itérer et afficher les paires clé-valeur de unordered_map, en étant explicite avec leurs types: Key:[BLUE] Value:[#0000FF] Key:[GREEN] Value:[#00FF00] Key:[RED] Value:[#FF0000] Itérer et afficher les paires clé-valeur en utilisant la liaison structurée C++17: Key:[BLUE] Value:[#0000FF] Key:[GREEN] Value:[#00FF00] Key:[RED] Value:[#FF0000] Afficher les valeurs par clé: Le HEX de la couleur ROUGE est:[#FF0000] Le HEX de la couleur NOIR est:[#000000] Utiliser l'opérateur[] avec une clé inexistante pour insérer une nouvelle paire clé-valeur: Key:[new_key] Value:[] Itérer et afficher les paires clé-valeur, en utilisant `auto`; new_key fait maintenant partie des clés de la map: Key:[new_key] Value:[] Key:[WHITE] Value:[#FFFFFF] Key:[BLACK] Value:[#000000] Key:[BLUE] Value:[#0000FF] Key:[GREEN] Value:[#00FF00] Key:[RED] Value:[#FF0000] Rapports de défautsLes rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
Voir aussi
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||