【发布时间】:2013-08-09 05:10:30
【问题描述】:
std::vector 类有一个方便的构造函数,它允许任何输入迭代器为其参数。我想在我自己的类中实现类似的模式,因为该类在实例化时需要接受一些集合,但我希望在该集合上使用迭代器以进行封装。我想到的一种方法是使用输入迭代器类型对整个类进行模板化,但这不能是 STL 所做的,因为 vector 显然只使用被迭代的类型进行模板化。当然,一个选项是模板化生成器函数,但我真的很想知道实现 STL 的编译器是如何完成它的 - 不知何故,InputIterator 类型是仅特定于构造函数的类型名,即使构造函数不能被模板化。
(是的,我试过看vector.tpp,但看不懂)。
【问题讨论】:
-
"即使构造函数不能被模板化。"就是这样 - 他们可以成为,而这正是
vector所做的。 -
@jrok 好吧,那看起来很容易。那么this question 到底是什么?
-
构造函数的模板参数需要推导,因为无法明确指定。
-
@jrok 在那种情况下,我的问题似乎很微不足道 - 有什么理由坚持下去吗?
-
@VF1:仍然是一个完全合理的问题,明确且容易找到,并且有明确的答案。如果你删除它,以后会有人问它。
标签: c++