-2
votes

Qu'est-ce que Unorded_Map retourne lorsque vous recherchez une clé qui n'existe pas

J'ai un Unorded_map h code>.

Qu'est-ce que ce retour si h code> ne contient pas de clé x code >? p>

mystruct ms = h['x'];


3 commentaires

Réponse facile: Essayez-la et découvrez! Deuxièmement, lisez La documentation .


C'est à peu près une question de lecture-la-docs, n'est-ce pas?


J'ai lu mais je ne pouvais pas comprendre. Cela ne dit que cela ajoute si La valeur n'existe pas, mais je n'ai pas compris ce qu'il revient.


3 Réponses :


2
votes

Si la clé spécifiée 'x' n'existe pas, std :: ONUORKED_MAP :: opérateur [] insérera une valeur initialisée de valeur initialisée d'abord, puis renvoyez la référence au inséré munstructeur . Après que cette ms est initialisée de copie à partir du muntructeur inséré .

renvoie une référence à la valeur mappée sur une clé équivalente à la clé, effectuant une insertion si cette clé n'existe pas déjà.

Lorsque l'allocator par défaut est utilisé, il se traduit par ... la valeur mappée étant Value-initialisée .

Valeur de retour
Référence à la valeur mappée du nouvel élément si aucun élément avec clé clé n'existait.


0 commentaires

1
votes

La carte non ordonnée essaiera de par défaut initialiser le muntructif avec la clé "x" et assigner à mon structure.

Si vous voulez éviter cela, utilisez-le (clé) si cela n'existe pas, il lancera une exception OUT_OF_RANGE, que vous pouvez attraper et gérer.


0 commentaires

0
votes

Si vous utilisez directement H ['Toute clé qui n'est pas présente »], il lui donnera une valeur aléatoire. Ce que vous pouvez faire est chaque fois que vous n'êtes pas sûr de savoir s'il est là ou non seulement l'utiliser à l'intérieur d'un si. S'il est présent, il retournera vrai et sinon faux. Exemple: Si (h ['a']) COUT << H ['A'];


1 commentaires

"Cela donnera une valeur aléatoire" - ce n'est pas vrai - il donne une valeur initialisée muntruct , comme le dit Songyuanyao dans sa réponse. C'est pourquoi votre si (h ['a']) cout << h ['a]; suggestion est également faux: cela ajoutera un élément, puis voir s'il y a un moyen d'évaluer h ['a'] dans un contexte booléen - un tel "code> muntructeur :: Bool bool bool () const fonction membre, si oui, il fera la conversion et décidera d'imprimer s'il faut imprimer L'objet initialisé de la valeur / sinon, il ne compilera pas.