/usr/include/boost/algorithm/cxx17
NameSizeModeActions
exclusive_scan.hpp15570644editdlrm
for_each_n.hpp11090644editdlrm
inclusive_scan.hpp20020644editdlrm
reduce.hpp20580644editdlrm
transform_exclusive_scan.hpp13570644editdlrm
transform_inclusive_scan.hpp20110644editdlrm
transform_reduce.hpp18560644editdlrm
Edit: /usr/include/boost/algorithm/cxx17/transform_reduce.hpp (1856B)
/* Copyright (c) Marshall Clow 2017. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) */ /// \file transform_reduce.hpp /// \brief Combine the (transformed) elements of a sequence (or two) into a single value. /// \author Marshall Clow #ifndef BOOST_ALGORITHM_TRANSFORM_REDUCE_HPP #define BOOST_ALGORITHM_TRANSFORM_REDUCE_HPP #include // for std::plus #include // for std::iterator_traits #include #include #include #include namespace boost { namespace algorithm { template T transform_reduce(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init, BinaryOperation1 bOp1, BinaryOperation2 bOp2) { for (; first1 != last1; ++first1, (void) ++first2) init = bOp1(init, bOp2(*first1, *first2)); return init; } template T transform_reduce(InputIterator first, InputIterator last, T init, BinaryOperation bOp, UnaryOperation uOp) { for (; first != last; ++first) init = bOp(init, uOp(*first)); return init; } template T transform_reduce(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init) { return boost::algorithm::transform_reduce(first1, last1, first2, init, std::plus(), std::multiplies()); } }} // namespace boost and algorithm #endif // BOOST_ALGORITHM_TRANSFORM_REDUCE_HPP