Map Pair Typedef - irgendwie schnall ichs nich
-
Sorry, ich bins schonwieder.
Habe folgende Map definiert:
typedef std::map< std::string, int > NameNumberMap;Da ich den pair-Typ des öftern wieder brauche wollt ich noch den hier:
typedef std::pair< std::string, int > NameNumber;Und weil ich ja vielleicht mal den Typ der Einträge ändern will, ohne alles Umzuschreiben, wollt ich die erste Definition wieder ändern:
typedef std::map< NameNumber > NameNumberMap;Aber das geht nicht

error C2976: 'std::map' : too few template arguments
c:\programme\microsoft visual studio 8\vc\include\map(175) : see declaration of 'std::map'Also seh ich in die Deklaration, sowie in die STL-Referenz, und finde nichts..die Forensuche war auch nicht grade ergiebig:
Suchstring "*map* *pair* *typedef*" ergab genau keine Einträge
Kann ich dennoch die Map unabhängig vom Pair definieren?
(bitte kein #define Workaround, darauf bin ich schon selbst gekommen..)
-
Class iker schrieb:
Kann ich dennoch die Map unabhängig vom Pair definieren?
Nur, wenn du eine eigene Klasse davon ableitest und deren Konstruktoren entsprechend überlädst.
-

Ne, dann schreib ich doch lieber die paar Zeichen zweimal..
-
Die map erwartet nunmal zwei Typangaben und will die selber zu einem pair zusammenfassen. Also kannst du entweder deren value_type verwenden oder dein pair wieder auseinandernehmen:
//a: typedef map<string,int> NameNumberMap; typedef typename NameNumberMap::value_type NameNumber; //ergibt ein pair<const string,int> //b: typedef pair<string,int> NameNumber; typedef map<NameNumber::first_type,NameNumber::second_type> NameNumberMap;