STL에는 여러가지 copy 알고리즘을 제공하지만 copy_if 는 존재하지 않는다. 즉 원하는 것만을 복사를 하는 알고리즘은 직접 구현해야 한다.
template< typename IIter
typename OIter,
typename Predicate>
OIter copy_if(IIterbegin,
IIter end,
OIter destBegin,
Predicate p)
{
while(begin != end)
{
if( p(*begin) ) *destBegin++ = *begin;
++begin;
}
return destBegin;
}
대략 이런 코드로 구현할수 있다고 한다.