Frage zu map<string, vector<string> >
-
hi,
wollte wissen, wie ich bei so einer map in den vector schreiben, bzw. aus dem vector lesen kann. hab schon folgendes probiert:map<string, vector<string> >::const_iterator p; p->second.pushback("Hello");
gibt aber folgende fehlermeldung:
... no matching function for call to `std::vector<std::string, std::allocatorstd::string >::pushback(const char[6]) const'Execution terminated
vielleicht kann mir ja einer von helfen.
-
Hallo,
die Memberfunktion heisst push_back
mfg
v R
-
ja stimmt, hab beim tippen nen fehler gemacht.hab schon vorher gewusst wie die memberfunction heisst, aber das problem is geblieben.
-
Du hast vergessen, der Iteratorvariablen nen Iterator zuzuweisen. Sowas wie
std::map<std::string, std::vectorstd::string >::const_iterator p = map_var.begin()
musst du schon machen. Uebrigens, bei mir funktioniert die Spalte darunter, hier
mein kleines Testprogramm ohne Ausgabe:#include <iostream> #include <vector> #include <map> #include <string> typedef std::vector<std::string> StrVec; typedef std::map<std::string, StrVec > StrMap; typedef StrMap::value_type VT_STRMAP; int main( int argc, char * argv[] ) { StrMap MapStr; MapStr.insert(VT_STRMAP(std::string(), StrVec())); StrMap::iterator SMIt = MapStr.begin(); SMIt->second.push_back("Test"); return 0; }
mfg
v R
-
vielen dank v R.jetzt funktioniert es
-
auch mal ne frage zu dem thema:
typedef vector<unsigned char> daten; map<string, daten> fZdata; ... vector<unsigned char> daten(14); // wert variiert .. fürs beispiel fest auf 14 gesetzt. cout << daten.size() << endl; [i]// stimmt ist 14 ;)[/i] fZdata["muh"]=daten; cout << "#" << fZdata["muh"].size() << endl; [i]// stimmt überhaupt nicht! => "#17217601"[/i]
kann mir einer sagen wo mein fehler ist?
-
statt:
fZdata["muh"]=daten;
so geschrieben:
fZdata["muh"].insert(fZdata["muh"].end(),daten.begin(),daten.end());
aber immernoch der selbe fehler das fZdata["muh"].size() statt der daten.size()=14 eine 17217601 ausspuckt.. woran kann das nur liegen?
-
mhh der fehler lag woanders .. argh