在阅读“Effective STL”一书时,作者给出了一个如何copy_if
编写 a 的示例,因为这在标准算法中不存在。这是作者的版本:
template <typename Input, typename Output,typename Predicate>
OutputIterator copy_if(Input begin , Input end, Output destBegin, Predicate p)
{
while(begin != end)
{
if(p(*begin)) *destBegin++=*begin;
++ begin;
}
return destBegin;
}
现在我的问题是作者如何使用这样的方法:
copy_if(widg.begin(),widg.end(),ostream_iterator<widg>(cerr,"\n"),isDefective);
我的问题是为什么不使用 copy_if 定义模板参数(因为它需要 3),例如
copy_if<p1,p2,p3>(...)