Probleme mit map funktion "insert"
-
map<string, string> Studmap; map<string, string>::iterator it = Studmap.begin(); /*string m; string n; cout<<"Bitte geben Sie die Martikelnummer ein: "; cin>>m; cout<<"\nBitte geben Sie den Namen ein: "; cin>>n; pairs.insert(Studmap::value_type(m,n));*/ Studmap.insert(pair<string, string>("Frankfurt","1234")); Studmap.insert(pair<string, string>("Paris","hello")); Studmap.insert(pair<string, string>("Istanbul","hello")); for(it=Studmap.begin(); it!=Studmap.end(); it++){ cout<<(*it).first<< " "<<(*it).second<<endl; } //cout<<"Hier wird nach scheiss name gesucht und ausgegeben"<<endl; //cout<<Studmap["Frankfurt"]<<endl; }
Hallo
wie kann man per tastatur eingabe in die map einfügen.
so bekomme ich das hin:
Studmap.insert(pair<string, string>("Frankfurt","1234"));
aber wie geht das per tastatur eingabe,habe das versucht in meinem code doch das funktioniert nicht habe es ausgeklammertdanke für eure hilfe
-
manuela28 schrieb:
map<string, string> Studmap; map<string, string>::iterator it = Studmap.begin(); string m; string n; cout<<"Bitte geben Sie die Martikelnummer ein: "; cin>>m; cout<<"\nBitte geben Sie den Namen ein: "; cin>>n; [b] Studmap[m] = n;[/b] //pairs.insert(Studmap::value_type(m,n)); Studmap.insert(pair<string, string>("Frankfurt","1234")); Studmap.insert(pair<string, string>("Paris","hello")); Studmap.insert(pair<string, string>("Istanbul","hello")); for(it=Studmap.begin(); it!=Studmap.end(); it++){ cout<<(*it).first<< " "<<(*it).second<<endl; } //cout<<"Hier wird nach scheiss name gesucht und ausgegeben"<<endl; //cout<<Studmap["Frankfurt"]<<endl; }
Hallo
wie kann man per tastatur eingabe in die map einfügen.
so bekomme ich das hin:
Studmap.insert(pair<string, string>("Frankfurt","1234"));
aber wie geht das per tastatur eingabe,habe das versucht in meinem code doch das funktioniert nicht habe es ausgeklammertdanke für eure hilfe
-
hallo
danke für die infos, aber habe ein weiteres Problem.
Ich möchte gerne eine weitere Variable einfügen.
Martikelnummer, Name und Note.map<string,string>.......
wenn man in die map ein weiters Datentyp hinzufügt geht es nicht?
Warum und wie wäre da die beste Lösung!
Danke
-
manuela28 schrieb:
hallo
danke für die infos, aber habe ein weiteres Problem.
Ich möchte gerne eine weitere Variable einfügen.
Martikelnummer, Name und Note.map<string,string>.......
wenn man in die map ein weiters Datentyp hinzufügt geht es nicht?
Warum und wie wäre da die beste Lösung!
Danke1. std::set kann in diesem Fall benutzt werden
struct MyClass { std::string Martikelnummer; std::string Name; std::string Note; bool operator<(MyClass &c) const { return Martikelnummer < c.Martikelnummer; } }; std::set<MyClass> myset;
2. std::map and struct
struct MyClass { std::string Name; std::string Note; MyClass(const std::string &Name, const std::string &Note) : Name(Name), Node(Node) { } }; std::map<std::string, MyClass> myset; myset["126323"] = MyClass("Ivanov", "4"); myset["dffdff"] = MyClass("Petrov", "2");
u.s.w.
3. std::map and std::pair
std::map<std::string, std::pair<std::string, std::string> > myset; myset["126323"] = std::make_pair("Ivanov", "4"); myset["dffdff"] = std::make_pair("Petrov", "2");
u.s.w.
-
Weil eine map eben nur einen Schlüsseltyp und einen Wertetyp hat. Du musst den Rest in eine Struktur packen: nehmen wir an, die willst mit "Frankfurt" o.ä. noch mehr dinge assoziieren, dann geht das z.B. so:
struct daten { string wert1; unsigned long wert2; string wert3; //... }; typedef map<string,daten> m_map; int main() { m_map the_map; daten d; d.wert1=...; d.wert2=...; d.wert3=...; the_map["Frankfurt"]=d; //Da es noch keinen Eintrag für "Frankfurt gibt, wird ein neuer erstellt cout<<the_map["Frankfurt"].wert1; //Jetzt gibt es einen Wert für Frankfurt, dieser wird zurückgegeben... };
-
#include <iostream> #include <map> #include <string> using namespace std; void einfuegen(); void einfuegenmap(); void ausgeben(); struct daten { string wert1; string wert2; string wert3; friend ostream& operator<<(ostream& output, const daten& S); }; typedef map<string,daten> m_map; //map<string,daten>::iterator it= m_map.begin(); m_map the_map; int main() { char auswahl; while (auswahl != '0') { cout << "<1> Notenliste ausgeben" << endl; cout << "<0> Ende" << endl; cout<<"#######################################################\n"; cout<<"Bitte geben Sie die Funktion ein: "; cin>>auswahl; switch (auswahl) { case '1': einfuegenmap(); ausgeben(); break; case '0': break; default:cout << "Falsche Eingabe" << endl; break; } } return 0; } void ausgeben() { m_map::const_iterator it; for(it = the_map.begin(); it!=the_map.end();it++) { cout<<*it; } }; void einfuegenmap() { daten d; string m; string n; string s; cout<<"Bitte geben Sie die Martikelnummer ein: "; cin>>m; cout<<"\nBitte geben Sie den Namen ein: "; cin>>n; cout<<"Note"; cin>>s; d.wert1=m; d.wert2=n; d.wert3=s; the_map[m] = d; }; ostream &operator<<(ostream& output, const daten& S) { //output<<" "<<endl; output<<S.wert1<<" "<<S.wert2<<" "<<S.wert3<<endl; return output; };
Habe Problem bei der Ausgabe! Besser gesagt mit meineim ITERATOR
Problemstellung: Wie krieg ich meine ganzen Studenten aus der map heraus?
-
Es wäre wirklich hifreich, wenn du die Fehlermeldung postest...
-
manuela28 schrieb:
Problemstellung: Wie krieg ich meine ganzen Studenten aus der map heraus?
#include <iostream> for(map<string, string>::const_iterator ci = theMap.begin(); ci != theMap.end(); ++ci) std::cout << ci->first << ": " << ci->second << "\n";
ich hoffe, dass ich dich gerade richtig verstanden habe.
mfg