Méthode la plus simple pour vérifier si unordered_map de unordered_maps contient la clé
Je suis en utilisant un unordered_map de unordered_maps, tel que je peut faire référence à un élément à l'aide de la "multi-clé" syntaxe:
my_map[k1][k2]
.
Est-il un moyen pratique d'utiliser le même "multi-touche" syntaxe pour vérifier si un élément existe avant d'essayer de l'ouvrir? Si non, quel est le moyen le plus simple?
OriginalL'auteur user997112 | 2015-12-29
Vous devez vous connecter pour publier un commentaire.
Si votre intention est de tester l'existence de la clé, je ne voudrais pas utiliser
parce que
operator[]
sera, par défaut, la construction d'une nouvelle valeur de cette clé si elle n'existe pas déjà.Plutôt je préfère utiliser
std::unordered_map::find
. Donc, si vous êtes certains de la première clé existe, mais pas la seconde que vous pourriez faireSi vous souhaitez faire une fonction qui vérifie l'existence de les deux clés, alors vous pourriez écrire quelque chose comme
k1
existe, vous aurez envie d'utiliserfind
deux fois - une fois pour vérifierk1
et une fois pour vérifierk2
.Je pense que c'est ce dont j'ai besoin.
Dans ce cas, vous pouvez utiliser le
nested_key_exists
fonction dans la partie inférieure de la réponse. Il sera de retourtrue
si les deux clés existent,false
autrement.Il n'est pas clair si la valeur
my_map[k1]
serait mis en cache deux recherches pourrait être cherBon point, si c'est un sujet de préoccupation à l'intérieur de la carte (extrait de
my_map[k1]
peut être stocké dans une variable temporaire pour éviter de faire de la recherche à deux reprises.OriginalL'auteur CoryKramer
de travail pour chaque valeur unique conteneur associatif.
contains(my_map, k1, k2)
est vrai si il y a un élémentk1
qui contientk2
.OriginalL'auteur Yakk - Adam Nevraumont
Quelque chose comme cela? (pour la mutable cas)
appelé de la sorte:
... ou il y a le plus de python comme...
OriginalL'auteur Richard Hodges
Je ne crois pas qu'il existe un multi-syntaxe des clés à vérifier, mais la façon la plus simple serait d'utiliser le
find
méthode. Vous pouvez écrire une fonction simple de l'appliquer à ununordered_map
deunordered_map
sréférence
OriginalL'auteur Aiden Deom
Vous pouvez également utiliser la fonction count (http://www.cplusplus.com/reference/unordered_map/unordered_map/count/ )
qui renvoie 0 si la clé n'existe pas
OriginalL'auteur Hui Liu