00001
00002
00003 #ifndef ML_ALGORITHM_TRANSFORM_IF_HPP
00004 #define ML_ALGORITHM_TRANSFORM_IF_HPP
00005
00006 namespace ml_algorithm
00007 {
00008 template< class InputIterator, class OutputIterator, class UnaryOperator, class Predicate >
00009 OutputIterator transform_if (InputIterator first1, InputIterator last1,
00010 OutputIterator result, UnaryOperator op, Predicate pred)
00011 {
00012 while (first1 != last1) if(pred(*first1))
00013 *results++ = op(*first++);
00014 return results;
00015 }
00016
00017 template< class InputIterator, class OutputIterator, class UnaryOperator, class Predicate >
00018 OutputIterator transform_if (InputIterator first1, InputIterator last1,
00019 InputIterator first2, InputIterator last2,
00020 OutputIterator result, BinaryOperator op, Predicate pred)
00021 {
00022 while (first1 != last1) if(pred(*first1))
00023 *results++ = op(*first++, *first2++);
00024 return results;
00025 }
00026 }
00027
00028 #endif
00029