map - doppelte Einträge
-
Hallo, programmiere gerade ein kleines Beispielprogramm, um den Umgang mit maps zu erlernen:
cout<<"Bitte geben Sie den code des neuen Fehlers ein, den Sie anlegen moechten!"<<endl; cin>>code; cout<<"Bitte geben Sie die Beschreibung des neuen Fehlers ein, den Sie anlegen moechten!"<<endl; cin>>text; errorcodes.insert(std::pair<int,string>(code,text) ); //Eintrag anlegen cout<<"Der Fehler wurde erfolgreich erstellt."<<endl;Nun möchte ich die eingegebene ID überprüfen und einen Fehler ausgeben, wenn in der map schon ein Eintrag mit dieser ID existiert. Wie kann ich das am besten machen?
-
schau dir doch einmal an, was die Methode "std:
:find" macht.
-
int ID; cin >> ID; // ... auto it = errorcodes.find(ID); if ( it != errorcodes.end() ) { // schon vorhanden, failed ! }
-
Habs damit jetzt gelöst. dank euch.
-
Oder auch:
if(!errorcodes.insert(std::make_pair(ID, text)).second) { std::cout << "Einfuegen fehlgeschlagen\n"; }
-
Tachyon schrieb:
Oder auch:
if(!errorcodes.insert(std::make_pair(ID, text)).second) { std::cout << "Einfuegen fehlgeschlagen\n"; }Das. Wozu 2 (möglicherweise teure) Lookups wenn einer reicht?
-
sonst gibt es auch noch die Funktion count, die praktisch ist, wenn man nur wissen will, ob und wie oft ein bestimmter Schlüssel drin ist (bei std::map im Gegensatz zu std::multimap eben immer nur 0 oder 1 mal).