Program Listing for File transform.hpp

Return to documentation for file (rcppsw/algorithm/transform.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include "rcppsw/rcppsw.hpp"

/*******************************************************************************
 * Namespaces/Decls
 ******************************************************************************/
namespace rcppsw::algorithm {

/*******************************************************************************
 * Templates
 ******************************************************************************/
template <class InputIterator,
          class OutputIterator,
          class Predicate,
          class UnaryFunction>
OutputIterator transform_if(InputIterator first,
                            InputIterator last,
                            OutputIterator result,
                            const Predicate& pred,
                            const UnaryFunction& f) {
  for (; first != last; ++first) {
    if (pred(*first)) {
      *result++ = f(*first);
    }
  } /* for(...) */
  return result;
}

} /* namespace rcppsw::algorithm */