typedef für den Iterator ohne typename



  • Hallo,

    kann mir jemand freundlicherweise sagen, ob ich einen typedef für einen
    iterator erstellen kann, ohne sich auf einen bestimmten typ z.Bsp int zu fixieren?

    so gehts ohne Probleme:

    //typedef int iterator 
    typedef std::vector<int> CONTAINER;
    typedef CONTAINER::iterator ITERATOR;
    
    //im main
    vector<int> vTemp;
    for (int i=0;i<=100 ;i++)
    vTemp.push_back(i);
    
    for (ITERATOR iter=vTemp.begin();iter!=vTemp.end() ;iter++){;}
    

    //so würde ich es gerne tun
    //für unterschiedliche typen
    //im main funktionierts allerdings nicht

    typedef std::vector<class T> CONTAINER;
    typedef CONTAINER::iterator ITERATOR;
    

    Danke im voraus!



  • Nein, das geht so nicht, da der Iterator vom Typ des Containers abhängt. (denn dort kommt der Iteratortyp ja her ;-))

    Was Du machen kannst ist sowas hier:

    template <class Container> 
    void doSomething( Containter& c)
    {
      typename C::iterator it( c.begin());
      // mache irgendwas mit it...
    }
    


  • entschuldige die Typos... es ist noch früh ,

    template <class Container>
    void doSomething( Container& c)
    {
      typename Container::iterator it( c.begin());
      // mache irgendwas mit it...
    }
    


  • Da es template-typedefs noch nicht gibt, geht nur sowas:

    template<class T>
    struct foo
    {
        typedef typename std::vector<T>::iterator iterator;
    };
    

Anmelden zum Antworten