Hinzufügen von Elementen zu einer STL-Map in eine Konstruktoren eine Initialisierungsliste?
Ich Frage mich, ob dies möglich war, und wenn ja, wie würde ich über das tun so gehen. Wenn es nicht möglich ist, werde ich nur hinzufügen müssen, um die Elemente während der Konstruktor Körper.
Idealerweise würde ich gerne die Karte unveränderlich nach dem Bau.
Was ich versuche zu erreichen, ist das hinzufügen von zwei Paaren auf der Karte, die erstellt werden, von Konstruktor-Parameter.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich durch copy-Konstruktion: eine Funktion aufzurufen, die bauen die Karte!
Ohne extra-tools können Sie nur init-std-Container bei der Initialisierung-Listen so weit wie Ihre Konstruktoren, die Sie unterstützen. Wenn Sie mehr benötigen,
map_list_of()
et al, die von Boost.Weisen Sie machen einen tollen job.Steigern.Weisen Sie in Aktion:
edit: aktualisiert
std::map
Beispiel.map_list_of
statt.Gibt es einen map-Konstruktor, eine Reihe als ein paar von Iteratoren. Mit, dass, können Sie konstruieren etwas ähnliches wie Ihre Anforderungen:
Zugegeben, nicht schön.
Die nächste version von C++ kommt mit bessere Unterstützung für die Initialisierung von Listen. Bis dahin Steigern.Weisen Sie die nächste beste Sache.
from constructor parameters
ich würde sagen, Sie verpassen den Punkt... Wie ich in meinem ersten Versuch.Ich einen Initialisierer der Klasse:
Dann, um ihn zu benutzen:
Dies ist kostenlos (in dem Sinne, dass Sie nicht den Aufbau einer Karte, zu kopieren, und wirft den ersten Weg), weil der C++'s return-Wert-Optimierung. Das gleiche kann getan werden, für die Initialisierung einer Vektor-oder anderen standard-Containern.
Hoffe, das hilft!