Frage zu std::map



  • Wie kann ich mir hier ausgeben lassen welchen Wert mein Iterator hat?

    #include <iostream>
    #include <map>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    int pos = 10; 
    
    map<int,string>var;
    var[ 4 ] = "abc";
    
    map<int, string>::const_iterator it = var.find( pos );
    
    //cout<<"it: " << it << endl; // 'operator<<' ist im Typ 'ostream' für Argumente des Typs '_Rb_tree_iterator<pair<const int,string>,_Const_traits<pair<const int,string> > >' nicht implementiert
    
    if ( it == var.end() )
    {
     cout<<"string nicht gefunden";
    }
    
    return 0;
    }
    


  • Map-Iteratoren zeigen auf ein std::pair<key,value>, also kannst du it->first und it->second benutzen. An der auskommentierten Stelle wäre es allerdings ungünstig, da ja nichts gefunden wird.



  • Ich würde mir an deiner Stelle einen Dumper-Makro (ließe sich auch als Template schreiben) für Map-Iteratoren schreiben, so kannst du an verschiedenen Stellen darauf zugreifen:

    #define dump_map_iter(iter, os) \
                os << "For map-iterator \"" #iter "\": Key=" << iter->first << " Value=" << iter->second
    

    P.S.: Bitte formatiere deinen Code.



  • Sone schrieb:

    Ich würde mir an deiner Stelle einen Dumper-Makro (ließe sich auch als Template schreiben) für Map-Iteratoren schreiben, so kannst du an verschiedenen Stellen darauf zugreifen:

    #define dump_map_iter(iter, os) \
                os << "For map-iterator \"" #iter "\": Key=" << iter->first << " Value=" << iter->second
    

    P.S.: Bitte formatiere deinen Code.

    👎



  • Sone schrieb:

    Ich würde mir an deiner Stelle einen Dumper-Makro (ließe sich auch als Template schreiben) für Map-Iteratoren schreiben, so kannst du an verschiedenen Stellen darauf zugreifen:

    #define dump_map_iter(iter, os) \
                os << "For map-iterator \"" #iter "\": Key=" << iter->first << " Value=" << iter->second
    

    P.S.: Bitte formatiere deinen Code.

    🙄


Log in to reply