你不能简单地使用它!
如果将迭代器类型声明为模板,则可以这样:
template <typename Itr>
BigInteger(Itr begin, Itr end)
{
}
或者
BigInteger(std::vector<int>::iterator begin, std::vector<int>::iterator end)
{
}
但是,怎么样std::iterator。嗯,std::iterator是一个模板类,你应该提供它的参数,你应该从它派生
class MyItr : public std::iterator<std::input_iterator_tag, int>
{
...
};
BigInteger(MyItr begin, MyItr end)
{
}
说来话长!一个可能的定义std::iterator是
  template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
           typename _Pointer = _Tp*, typename _Reference = _Tp&>
    struct iterator
    {
      typedef _Category  iterator_category;
      typedef _Tp        value_type;
      typedef _Distance  difference_type;
      typedef _Pointer   pointer;
      typedef _Reference reference;
    };
如您所见,它只是一个带有一些typedefs 的空类。因此,您必须为派生迭代器实现operator*(), operator->(), begin(), end(), ... 。