如何实现一个可以用输入迭代器构造的类?

时间:2013-08-07 17:29:50

标签: c++

std::vector类有一个方便的构造函数,它允许任何输入迭代器作为其参数。我想在我自己的类中实现一个类似的模式,因为类在实例化时需要接受一些集合,但是我想在集合上使用迭代器来进行封装。我想到的一种方法是使用输入迭代器类型对整个类进行模板化,但这不能是STL所做的,因为vector显然只是模拟迭代的类型。当然,一个选项是模板生成器函数,但我真的想知道它是如何通过实现STL的编译器完成的 - 不知何故,InputIterator类型只是一个特定于构造函数的类型名,即使构造函数可以不定型。

(是的,我试过看vector.tpp,但我无法理解)。

1 个答案:

答案 0 :(得分:5)

你的类应该有一个模板化的构造函数(在迭代器类型上模板化):

class my_class {

    template <typename InputIterator>
    my_class(InputIterator first, InputIterator last) {
        // ...
    }

    // ...
};