J'ai un Qu'est-ce que ce retour si Unorded_map
h code> ne contient pas de clé
x code >? p>
mystruct ms = h['x'];
3 Réponses :
Si la clé spécifiée 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à. P>
blockQuote>
Lorsque l'allocator par défaut est utilisé, il se traduit par ... la valeur mappée étant Value-initialisée . p>
blockQuote>
'x' code> n'existe pas,
std :: ONUORKED_MAP :: opérateur [] code>
insérera une valeur initialisée de valeur initialisée code> d'abord, puis renvoyez la référence au inséré munstructeur code>. Après que cette
ms code> est initialisée de copie à partir du muntructeur inséré code>. P>
Référence à la valeur mappée du nouvel élément si aucun élément avec clé clé n'existait. P>
blockQuote>
La carte non ordonnée essaiera de par défaut initialiser le muntructif avec la clé "x" et assigner à mon structure. P>
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. P>
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']; P>
"Cela donnera une valeur aléatoire" i> - ce n'est pas vrai - il donne une valeur initialisée muntruct code>, comme le dit Songyuanyao dans sa réponse. C'est pourquoi votre
si (h ['a']) cout << h ['a]; code> suggestion est également faux: cela ajoutera un élément, puis voir s'il y a un moyen d'évaluer
h ['a'] code> dans un contexte booléen - un tel "code> muntructeur :: Bool bool bool () const code> 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.
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.