2010-10-05 91 views
1

我想知道如何爲接受任何STL輸入迭代器的自定義類(在這種情況下是鏈表)編寫構造函數。我已經創建了一個與我的List類綁定的自定義Iterator類。STL迭代器到構造函數中

這工作正常。

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

我已經設法創建一個構造函數來接收像這樣的列表迭代器。

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

我STL-FU是不是真的達到上如何去推廣這個接受任何輸入迭代
任何幫助那裏扼殺?

謝謝!

回答

5

我認爲它是如此簡單:

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

非常感謝!解決了。 – citizencane 2010-10-05 17:18:22

3

這可能是一個簡單的模板構造函數。

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) {...}