Поделиться через


Функция parallel_transform

Применяет указанный объект функции к каждому элементу в диапазоне источника или к паре элементов из 2 диапазонов источника и копирует возвращаемые значения объекта функции в диапазон назначения, параллельно.Эта функциональная семантически эквивалентной привязке 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
    Тип унарного functor, которую необходимо выполнить для каждого элемента в диапазоне ввода.

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

  • _Binary_operator
    Тип бинарный functor выполнялся pairwise элементов из 2 диапазонов источника.

  • _Partitioner

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

  • _Last1
    Итератор ввода final адресации позиция одно за элементом на первом или только диапазоном источника обрабатываться on.

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

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

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

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

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

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

При адресации позиция итератора вывода final одно за элементом в диапазоне назначения, возвращает выходные элементы преобразовал объектом функции.

Заметки

auto_partitioner будет использоваться для перегрузок без явного указания аргумента модуля разделения.

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

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

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

Дополнительные сведения см. в разделе Параллельные алгоритмы.

Требования

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

Параллелизм пространство имен:

См. также

Ссылки

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