std::map?
-
sdt::map
-was ist das?
-wozu wird es verwendet?
-beispiele?mfg
-
Eine Map ist ein assoziativer Container:
Bei Arrays bzw. Vektoren findet man Elemente wieder, indem man den Index angibt.
Bei Maps lassen sich alle möglichen Datentypen als Schlüssel verwenden
(bin mir jetzt nicht ganz sicher, aber ich glaub, dass die Schlüssel-Objekte
die Vergleichsoperatoren überladen müssen)Beispiel:
// mit Vektoren: std::vector<std::string> myVec; myVec.push_back("Hans"); myVec.push_back("Wurscht"); myVec.push_back("hintermMond"); // mit Map std::map<std::string, std::string> niceMap; niceMap["Vorname"] = "Hans"; niceMap["Name"] = "Wurscht"; niceMap["Ort"] = "hintermMond"; // so und jetzt wollen wir wissen, wo der Typ wohnt std::cout<<myVec[2]<<std::endl; std::cout<<niceMap["Ort"]<<std::endl;
-
anonymus schrieb:
(bin mir jetzt nicht ganz sicher, aber ich glaub, dass die Schlüssel-Objekte die Vergleichsoperatoren überladen müssen)
Entweder sie überladen den operator<, oder du gibst der map eine Vergleichsfunktion (Funktor) mit auf den Weg:
class nocase_compare : public binary_function<std::string,std::string,bool> { bool operator()(const std::string& l,const std::string& r) { std::string l2=l,r2=r; std::transform(l2.begin(),l2.end(),l2.begin(),toupper); std::transform(r2.begin(),r2.end(),r2.begin(),toupper); return l2<r2; } } struct data_t { ... } std::map<std::string,data_t,nocase_compare> ncMap;//vergleicht Schlüsselwerte ohne Rücksicht auf Groß/Kleinschreibung