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.