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 🙂


Anmelden zum Antworten