Реализовать обобщенную функцию ptransform
, которая является многопоточной версией функции
std::transform.
Определение количества потоков выполнения является деталью реализации.
Нижеприведенные сигнатуры функций ptransform
фиксированы и не подлежат изменению.
//ptransform.hpp
template< class InputIt, class OutputIt, class UnaryOperation >
constexpr OutputIt ptransform( InputIt first1, InputIt last1, OutputIt d_first,
UnaryOperation unary_op );
template< class InputIt1, class InputIt2, class OutputIt, class BinaryOperation >
constexpr OutputIt ptransform( InputIt1 first1, InputIt1 last1, InputIt2 first2,
OutputIt d_first, BinaryOperation binary_op );
Параллельная версия алгоритма работает лучше, чем последовательная реализация, только если размер диапазона превышает определенный порог, который может варьироваться в зависимости от параметров компиляции, платформы или оборудования. Поэкспериментируйте с различными порогами и размерами диапазонов, чтобы увидеть, как изменяется время выполнения. И установите порог на минимальное количество элементов для выполнения многопоточной реализации.
ptransform
фиксированы и не подлежат изменению.ptransform.hpp
.