2010-10-05 4 views
1

L'id 'aime savoir comment écrire un constructeur pour une classe personnalisée (une liste liée dans ce cas) qui accepte n'importe quel itérateur d'entrée STL. J'ai déjà créé une classe Iterator personnalisée liée à ma classe List.L'itérateur STL dans le constructeur

Cela fonctionne très bien.

template <typename T> 
List<T>::List(Iterator beg, Iterator end) : first_(0) { 
    while (beg != end) 
     insertLast(*beg++); 
} 

J'ai réussi à créer un constructeur qui reçoit itérateurs liste comme ça.

List<T>::List(typename list<T>::iterator s, typename list<T>::iterator e) : 
    first_(0) { 
    while (s != e) 
     insertLast(*s++); 

Ma STL-fu est pas vraiment à la hauteur sur la façon de s'y prendre pour accepter cette généralisant toute itérateur d'entrée
Toute aide là-bas?

Merci!

Répondre

5

je pense qu'il est aussi simple que cela:

template <typename T, typename Iterator> 
List <T>::List(Iterator beg, Iterator end) : first_(0) { 
    while (beg != end) 
     insertLast(*beg++); 
} 
+0

Merci beaucoup! Résolu. – citizencane

3

Cela pourrait être simplement un constructeur basé sur un modèle.

template <class T> 
class List 
{ 
    public: 
    template <class Iter> 
    List(Iter from, Iter to); 
    ... 
}; 

template <class T> 
template <class Iter> 
List<T>::List(Iter from, Iter to) {...} 
Questions connexes