Wird ein int in einer map mit 0 initialisiert?



  • Wenn ich eine

    std::map<string,int> counter
    

    anlege 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.


  • Mod

    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.


  • Mod

    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.


Anmelden zum Antworten