Wann sollte ich std :: map :: at verwenden, um das Kartenelement abzurufen

Habe ich gelesen, die anderen Artikel auf dem web und Fragen an stackoverflowaber für mich ist es nicht klar gibt es eine exklusive Fall, wenn es besser ist, zu verwenden std::map::at abrufen map-element.

Laut definitionstd::map::at

Gibt einen Verweis auf das zugeordnete Wert des Elements identifiziert
der Schlüssel k.

Wenn k nicht mit dem Schlüssel von jedem element in dem container, der
die Funktion wirft eine out_of_range Ausnahme.

Für mich nur dann, wenn es Wert ist zu verwenden std::map::at wenn Sie 100% sicher sein, das element mit bestimmten Schlüssel existiert, ansonsten sollten Sie überlegen, die Behandlung von Ausnahmen.

  1. Gibt es irgendeinen Fall, wo std::map::at als die meisten effiziente und elegante Art und Weise zu tun? In welchen Fällen empfehlen die Verwendung von std::map::at ?
  2. Bin ich richtig, dass es besser ist, zu verwenden map::find() wenn es eine Möglichkeit gibt, um nicht-element mit einem solchen Schlüssel? Und map::find() es ist schneller und eleganter Ansatz?
if ( map.find("key") != map.end() )
{
    //found 

} else
{
    //not found
}

p.s

map::operator[] manchmal gefährlich sein kann, denn wenn ein element nicht existiert, dann wird er es fügt.

BEARBEITET: links, die irgendwie im Zusammenhang link 1 link 2 link 3 link 4 link 5 link 6

InformationsquelleAutor der Frage T M | 2015-10-20

Schreibe einen Kommentar