2010-02-27 2 views
7

Ich initialisiere eine Karte map<string,int> ex; in C++. Ich konnte nicht finden, contains_key oder ähnliche Funktion in stl, daher bin ich nur mit ex[inputString]++;Eine Anfangswertannahme über Karte in C++

Der Debugger zeigt die int auf Null korrekt initialisiert werden, ist es eine gute Annahme?

Antwort

7

Ja, Werte, die nicht existieren, wenn sie mit operator[] zugegriffen werden default-konstruiert. Für numerische Werte, das ist 0.

Das heißt, Sie sind für die count Methode suchen:

bool hasElement = ex.count("element"); 
+1

Dank, gut zu wissen, dass es auf Null gesetzt wird, speichert die, wenn vorhanden dann Art initialisieren! der in python benötigten Struktur –

+2

@akshayubhat C++ 's 'map [k]' und Pythons 'dict.setdefault (k [, d])' sind insofern ähnlich, als ein nicht existierender Schlüssel auf einen Standard gesetzt wird, wie C++ 's map. find (k) -> second' und Pythons 'dict [k]' ähnlich, da ein nicht existierender Schlüssel einen Fehler ergibt. Die zwei Sprachen wählen einfach verschiedene Optionen aus, für die die "gemeinsame" Operation sein soll. – ephemient