2010-10-05 89 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) {...}