Ce code semble bien fonctionner, avec la valeur par défaut pour les Qu'en est-il du double?
carte? Par défaut 0,0? P> P> value_type code> (
int code>) comme 0; Cela fonctionne-t-il pour tous les cas?
3 Réponses :
Oui. Lorsque vous utilisez le [] code> -Opérator sur une carte et aucun élément avec la clé souhaité n'existe, un nouvel élément est inséré qui est initialisé de la valeur. Pour un entier, cela signifie initialisé à zéro. P>
Oui, ce code fonctionnerait pour tout type de clé, y compris Le fragment de code que vous montrez fonctionne comme suit: p>
double code>. La raison pour laquelle cela fonctionne est que l'opérateur
non-const [] code> renvoie une référence em> à la valeur de la clé, pas une copie de cette valeur. C'est cette référence à laquelle l'opérateur
++ code> est appliqué. P>
t code> de type
chaîne code> dans le conteneur
str code>, li>
w code> est recherchée sur la touche donnée li>
0 code> pour
int code> ) objet pour la valeur est créée li>
int & code> initialisé à zéro) est renvoyé à l'appelant li>
++ code> est appliqué à la référence renvoyée à partir du
[] code>, qui change
0 code> sur
1 code > (ou
0.0 code> à
1.0 code>, etc.) li>
ul>
Merci pour l'explication! Très utile!
Je vois. Merci. C'est en fait ma première question sur Stackoverflow.
@dasblinkenlight Un objet par défaut pour la valeur est créé code>, pourriez-vous expliquer, pourquoi INT est initialisé à 0? AFAIC, "constructeur" par défaut pour
int code> ne spécifie pas de valeur particulière et la valeur prévue d'être indéfinie
@Alexey Il est important de distinguer entre l'initialisation par défaut et l'initialisation de la valeur pour un int code>. Si vous écrivez
int x; code> thun
x code> est initialisé par défaut, lequel pour
int code> signifie "Aucune initialisation n'est effectuée", car c'est un type de pod . Si vous écrivez
int x = int () code>, quel est ce que les conteneurs font (sauf que c'est
t x = t () code> pour les conteneurs, car ils sont des modèles) alors
x code> est initialisé en integer zéro.
fonctionne-t-il pour tous les cas? P> blockQuote>
Pour tous les cas, une nouvelle clé sera associée à une valeur initialisée à
t () code>. p>
Quand
t code> est un intégré ou Données anciennes simples Tapez, tels que
int code> ou
double code>, qui évalue à zéro. p>
Lorsque
t code> est une classe, la carte tentera d'appeler le constructeur vide. P>
Si cette classe a un constructeur par défaut. Sinon, cela ne parviendra pas à compiler.
Je ne peux pas comprendre ce que vous demandez réellement. Pouvez-vous rehrasser?
Désolé pour la confusion. Les réponses ci-dessous sont très utiles.