目前,我堅持一些代碼,如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