std::vector
类有一个方便的构造函数,它可以为其参数提供任何输入迭代器。我想在自己的类中实现一个类似的模式,因为类需要在实例化时收集一些集合,但是我希望将迭代器放在该集合上用于封装目的。我认为这样做的一种方式是使用输入迭代器类型对整个类进行模板化,但这不可能是STL所做的,因为vector
显然只是在迭代类型的情况下进行模板化。当然,其中一个选项是模板化的生成器函数,但我真的想知道实现STL的编译器是如何完成的 - 不知何故,InputIterator
类型仅仅是特定于构造函数的类型名称,即使构造函数不能模板化。如何实现一个可以使用输入迭代器构造的类?
(是的,我试图看看vector.tpp
,但我无法理解它)。
这就是事情 - 它们*可以是,而这正是'矢量'所做的。 – jrok
@jrok好吧,那似乎很容易。什么是[这个问题](http://stackoverflow.com/questions/3960849/c-template-constructor)所有关于那么? – VF1
构造函数的模板参数需要被推断,因为没有办法明确指定它们。 – jrok