3

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

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

4

1 回答 1

5

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

class my_class {

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

    // ...
};
于 2013-08-07T17:33:27.493 回答