Функция parallel_transform

Применяет параллельно заданный объект функции к каждому элементу в диапазоне источника или к паре элементов из двух исходных диапазонов и копирует возвращаемые значения объекта функции в диапазон назначения. Эта функция семантически эквивалентна std::transform.

template <
   typename _Input_iterator1,
   typename _Output_iterator,
   typename _Unary_operator
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Output_iterator_Result,
   const _Unary_operator& _Unary_op,
   const auto_partitioner& _Part = auto_partitioner()
);

template <
   typename _Input_iterator1,
   typename _Output_iterator,
   typename _Unary_operator
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Output_iterator_Result,
   const _Unary_operator& _Unary_op,
   const static_partitioner& _Part
);

template <
   typename _Input_iterator1,
   typename _Output_iterator,
   typename _Unary_operator
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Output_iterator_Result,
   const _Unary_operator& _Unary_op,
   const simple_partitioner& _Part
);

template <
   typename _Input_iterator1,
   typename _Output_iterator,
   typename _Unary_operator
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Output_iterator_Result,
   const _Unary_operator& _Unary_op,
   affinity_partitioner& _Part
);

template <
   typename _Input_iterator1,
   typename _Input_iterator2,
   typename _Output_iterator,
   typename _Binary_operator,
   typename _Partitioner
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Input_iterator2_First2,
   _Output_iterator_Result,
   const _Binary_operator& _Binary_op,
   _Partitioner&& _Part
);

template <
   typename _Input_iterator1,
   typename _Input_iterator2,
   typename _Output_iterator,
   typename _Binary_operator
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Input_iterator2_First2,
   _Output_iterator_Result,
   const _Binary_operator& _Binary_op
);

Параметры

  • _Input_iterator1
    Тип первого или единственного итератора ввода.

  • _Output_iterator
    Тип итератора вывода.

  • _Unary_operator
    Тип унарного функтора, который должен выполняться для каждого элемента в диапазоне.

  • _Input_iterator2
    Тип второго итератора ввода.

  • _Binary_operator
    Тип бинарного функтора, выполняемого над парой элементов из двух исходных диапазонов.

  • _Partitioner

  • _First1
    Итератор ввода указывает на позицию первого элемента в первом или единственном обрабатываемого диапазоне источника.

  • _Last1
    Итератор ввода указывает на позицию, следующую за последним элементом в первом или единственном обрабатываемого диапазоне источника.

  • _Result
    Итератор вывода указывает на позицию первого элемента в диапазоне назначения.

  • _Unary_op
    Определенный пользователем объект функции, который применяется к каждому элементу в диапазоне источника.

  • _Part
    Ссылка на объект-разделитель. Аргумент может быть одним из constauto_partitioner&, conststatic_partitioner&, constsimple_partitioner& или affinity_partitioner&, если используется объект affinity_partitioner, ссылка должен быть неконстантной l-value ссылкой, чтобы алгоритм мог сохранять состояние для последующих циклов при повторном использовании.

  • _First2
    Итератор ввода указывает на позицию первого элемента во втором обрабатываемого диапазоне источника.

  • _Binary_op
    Определяемый пользователем объект функции, который последовательно применяется к парам элементов из двух исходных последовательностей.

Возвращаемое значение

Итератор вывода указывает на позицию после последнего элемента в целевом диапазоне, который получает выходные элементы, преобразованные объектом функции.

Заметки

auto_partitioner используется для перегруженных функций без явного аргумента разделения.

Для итераторов, не поддерживающих прямой доступ, поддерживается только auto_partitioner.

Перегруженные версии, принимающие аргумент _Unary_op, преобразуют диапазон ввода в диапазон вывода путем применения унарного функтора к каждому элементу в диапазоне. _Unary_op должен поддерживать оператор вызова функции с сигнатурой operator()(T), где T является типом значения обрабатываемого диапазона.

Перегруженные версии, принимающие аргумент _Binary_op, преобразуют два диапазона ввода в диапазон вывода путем применения бинарного функтора на один элемент из первого диапазона ввода и один элемент из второго диапазона. _Binary_op должен поддерживать оператор вызова функции с сигнатурой operator()(T, U), где T, U являются типами значений входных итераторов.

Для получения дополнительной информации см. Параллельные алгоритмы.

Требования

Заголовок: ppl.h

Пространство имен: concurrency

См. также

Ссылки

Пространство имен concurrency