Die C++ Standard definiert einen std::map
Konstruktor eines std::initializer_list
:std :: map Initialisiererliste Konstruktor
map(std::initializer_list<value_type> init, const Allocator&);
Wo jedoch ist definiert, was passiert, wenn die Initialisiererliste doppelten Schlüssel enthält? Ist der erste Schlüssel ausgewählt oder der letzte? Zum Beispiel:
std::map<std::string, int> my_map {
{"a", 1},
{"a", 2}
};
In der Praxis scheint es, es wie insert()
verhält, so dass die Karte nun enthält {a: 1}.
Allerdings konnte ich nichts in der C++ - Standard diesbezüglich finden.
Technisch, zumindest aus den zitierten Teilen, scheint der Standard nicht zu diktieren, in welcher oder Die Elemente würden eingefügt werden. – user2079303
@ user2079303 Besser? – BoBTFish
Ich bin mir nicht sicher, ob das ausreicht.Sicher, wenn der übergebene Iterator nur ein Eingabe-Iterator ist, müssen sie der Reihe nach eingefügt werden, aber der Iterator von initializer_list ist ein Direktzugriffs-Iterator und ich sehe keine Regel, die die Spezialisierung für verschiedene Arten von Iteratoren verbietet. – user2079303