Wird ein int in einer map mit 0 initialisiert?
-
Wenn ich eine
std::map<string,int> counteranlege und dort einen neuen Eintrag mit dem operator[] erzeuge, wird der int dann zu 0 initialisiert? Hintergrund ist das ich folgendes machen möchte:
counter[name]++um das Vorkommen bestimmter Werte zu zählen.
-
Bei jedem Container der STL (bis auf std::array) werden die Werte ausnahmslos default-constructed.
Also funktioniert dein Code.
-
Danke, wir war nicht ganz klar, was default-constructed für einen int bedeutet.
-
TNA schrieb:
Danke, wir war nicht ganz klar, was default-constructed für einen int bedeutet.
Der korrekte Ausdruck dafür ist "Value-Initialisierung".
Bei ints gibt es nichts zu konstruieren. "Default-Initialisierung" macht bei ints gerade nichts, das wäre also auch ein falscher Begriff in diesem Fall.
-
Der korrekte Ausdruck dafür ist "Value-Initialisierung".
Entweder Wertinitialisierung oder value initialization.

Der Initializer für das Objekt welches in einem Container mit Allokator neu angelegt wird ist effektiv
(), was bei POD-Typen einer kompletten Ausnullung des Speichers entspricht.