std::vector - ctor?



  • Hallo,
    ich bin gerade etwas verwirrt. Hier sind 3 ctors aufgelistet. Was jedoch ist mit dem Iterator-Ctor:

    template<class _Iter>
         vector(_Iter _First, _Iter _Last)
    

    passiert? Warum ist der da nich aufgelistet!?

    Btw: Hat einer einen nützlichen Link, auf dem Allocator-Klassen ausführlich erklärt werden?

    Danke!



  • Kóyaánasqatsi schrieb:

    Hier sind 3 ctors aufgelistet.

    explicit vector ( const Allocator& = Allocator() );//1
    explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );//2
    template <class InputIterator>
             vector ( InputIterator first, InputIterator last, const Allocator& = Allocator() );//3 <- da isser doch!
    vector ( const vector<T,Allocator>& x );//4
    


  • Hupsi :D.
    Der 3 Parameter macht mir nur Sorgen... wofür zur Hölle braucht man die Allocator-Klasse?

    EDIT:
    Danke!



  • Kóyaánasqatsi schrieb:

    wofür zur Hölle braucht man die Allocator-Klasse?

    Um Speicher zu alloieren 😉 Der Standard std::aalocator benutzt einfach new bzw. new[] - wenn du jetzt aber z.B. einen Speichermanager benutzt und deine Klasse die du im vector ablegen willst für new einen zusätzlichen Parameter hat (den Speichermanager), dann musst du dem vector das irgendwie mitteilen - indem du ihm einen allocator mitgibst, der new mit speichermanagerparameter aufruft.



  • wenn du jetzt aber z.B. einen Speichermanager benutzt und deine Klasse die du im vector ablegen willst für new einen zusätzlichen Parameter hat

    Und wenn du das nicht willst (also im Normalfall) lässt du den dritten Parameter einfach weg, da er ja einen Defaultwert besitzt.


Anmelden zum Antworten