目前,我坚持一些代码,如fooA()
(不介意身体),它需要一个特定的容器,如vector<double>
,作为参数。通过迭代器而不是容器
double fooA(std::vector<double> const& list)
{
return list[0];
}
现在,我想概括和使用迭代器来代替:
template<typename InputIterator>
double fooB(InputIterator first, InputIterator last)
{
return *first;
}
如何声明,fooB()
需要迭代器遍历double
?
有人可能会通过vector<string>::iterator
,或者更糟,因为它可能会在没有警告的情况下编译为vector<int>::iterator
。
也许你的意思是你需要指出迭代器是否需要遍历double? – 2012-04-13 17:18:41
嘿,这可以做到,但它不漂亮。我建议只是在注释中,因为返回类型会强制它至少将迭代器类型转换为“double”。 – 2012-04-13 17:23:17
'double'而不是'int'当然。我纠正了这一点,谢谢。我的“真实世界返回类型”不取决于迭代器... – 2012-04-13 17:59:44