Problem beim Durchlaufen einer map



  • Hallo,
    ich habe eine Funktion, welche als Parameter eine map<double, double> übergeben bekommt.
    In dieser Methode möchte ich jetzt jedes Element dieser map mit einem Iterator durchlaufen.

    Habe das also folgendermaßen gemacht:

    void generate(const map<double, double>& reading) {
    
    	map<double, double>::iterator it;
    	 if(i == 0 && k==0) { continue; }
    
    			for(it=reading.begin(); it!=reading.end();it++) {
    				// mach irgendwas
    			}
    
    }
    

    Es kommt aber der Fehler:

    main.cpp: In function 'void generate(const std::map<double, double, std::less<double>, std::allocator<std::pair<const double, double> > >&)':
    main.cpp:56: error: no match for 'operator=' in 'it = ((const std::map<double, double, std::less<double>, std::allocator<std::pair<const double, double> > 
    >*)reading)->std::map<_Key, _Tp, _Compare, _Alloc>::begin [with _Key = double, _Tp = double, _Compare = std::less<double>, _
    Alloc = std::allocator<std::pair<const double, double> >]()'
    /usr/include/c++/4.3/bits/stl_tree.h:152: note: candidates are: 
    std::_Rb_tree_iterator<std::pair<const double, double> >& std::_Rb_tree_iterator<std::pair<const double, double> 
    >::operator=(const std::_Rb_tree_iterator<std::pair<const double, double> >&)
    

    habe <map> natürlich inkludiert.
    Ideen?



  • std::map<double, double>::const_iterator it;
    


  • Oh, den kannte nich noch garnicht! Wusste nicht, dass man für const maps einen anderen iterator braucht...

    Danke sehr 🙂



  • Fabulus schrieb:

    Oh, den kannte nich noch garnicht! Wusste nicht, dass man für const maps einen anderen iterator braucht...

    Naja, für konstante Container braucht man iteratoren, die den Container nicht ändern (können) den Iterator selber const zu machen ist da natürlich nicht der richtige weg, also brauchts einen komplett anderen Iterator.



  • Das klingt dann wiederum auch logisch...


Anmelden zum Antworten