map füllen ohne std::make_pair?
-
Hi!
Wie kann ich eine Map füllen ohne std::make_pair zu benutzen?
-
Wenn du einen Key ansprichst der noch nicht existiert wird er erstellt. Geht aber natürlich nicht bei Multimaps. nsonsten kannste auch den Konstruktor von std::pair nehmen wenn du meinst das ändert was.
-
std::map<int, int> x; x.insert( std::map<int, int>::value_type( 3, 4));besser:
typedef std::map<int, int> MyMap; // natürlich ein im Kontext sinnvoller Name (und. ggf. ohne Map in Namen) MyMap x; x.insert( MyMap::value_type( 3, 4));oder wie FireFlow vorschlägt:
std::map<int, int> x; x[3] = 4;Existiert der Key 3 schon, wird der vorherige Wert an der Stelle 3 mit 4 überschrieben. Achtung bei dieser Nutzung:
cout << x.size() << endl; if( x[3] == 4) { } cout << x.size() << endl; // x ist um 1 größer gewordenIn diesem Fall wird auch ein insert auf die Map x gemacht !!!. Es wird ein mit default Konstruktor erzeugtes Element eingefügt und dass wird dann mit 4 verglichen.
-
typedef std::map<std::string, std::string> MapType; MapType MyMap; MyMap.insert(MapType::value_type(str1, str2)); // in der map sieht der typedef so aus typedef pair<const _Key, _Tp> value_type;