Die meisten effiziente Möglichkeit, Werte zuzuweisen, Karten

Welche Art und Weise Werte zuweisen einer Karte ist am effizientesten? Oder sind Sie optimiert für den gleichen code (in den meisten Compilern)?

   //1) Assignment using array index notation
   Foo["Bar"] = 12345;

   //2) Assignment using member function insert() and STL pair
   Foo.insert(std::pair<string,int>("Bar", 12345));

   //3) Assignment using member function insert() and "value_type()"
   Foo.insert(map<string,int>::value_type("Bar", 12345));

   //4) Assignment using member function insert() and "make_pair()"
   Foo.insert(std::make_pair("Bar", 12345));

(Ich weiß, ich könnte benchmark und prüfen, compiler-Ausgaben, aber diese Frage stellte sich nun, und das einzige, was ich in der Nähe bei der hand ist mein Handy... hehe)

  • Ich würde Wetten auf they are all the same. Ich konnte erläutern, warum das eine schneller als das andere, aber das wäre nur, wenn wir Sie ignorieren compiler-Optimierungen.
  • eigentlich 4) funktioniert, std::pair<std::string, int> p = std::make_pair("Bar", 12345); da der Konstruktor der pair ist Freizügig, die Art und Weise (wie lange, wie die Typen, die umgewandelt werden können, funktioniert es).
InformationsquelleAutor inquam | 2013-01-08
Schreibe einen Kommentar