boost indirect iterator



  • Hallo!

    Ich möchte für eine boost::unordered_map einen eigenen Iterator implementieren, den ich anschliessend wie folgt verwenden kann:

    files f;
    for (files::iterator it(f.begin()), it_end(f.end()); it != it_end; ++it) {
      // Do some work...
    }
    

    Der nicht-funktionierende Code sieht wie folgt aus:

    #include <string>
    
    #include "boost/iterator/indirect_iterator.hpp"
    #include "boost/noncopyable.hpp"
    #include "boost/unordered_map.hpp"
    
    class files : boost::noncopyable {
    public:
      typedef boost::indirect_iterator<boost::unordered_map<std::string, std::string>::iterator> iterator;
    
      files() {
        // Fill the map...
      }
    
      iterator begin() {
        return m_profiles.begin();
      }
    
      iterator end() {
        return m_profiles.end();
      }
    
    private:
      boost::unordered_map<std::string, std::string> m_profiles;
    };
    

    Wie kann ich hier die Iterator-Funktionalität in die Klasse <files> einbauen?

    Danke und Gruss,
    T.



  • Es funktioniert also nicht. Tolle Beschreibung ...



  • Warum denn indirect iterator?????



  • Wie kann ich hier die Iterator-Funktionalität in die Klasse <files> einbauen?

    Geht's nicht ein bisschen genauer?


Anmelden zum Antworten