parallel_transform, fonction

Applique un objet spécifié de fonction à chaque élément dans une plage source, ou à une paire d'éléments de deux plages sources, et copie les valeurs de retour de l'objet de fonction dans une plage de destination, en parallèle.Ce func est sémantiquement équivalente à 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
);

Paramètres

  • _Input_iterator1
    Le type du premier ou uniquement itérateur d'entrée.

  • _Output_iterator
    Le type de l'itérateur de sortie.

  • _Unary_operator
    Le type du functor unaire à exécuter sur chaque élément dans la plage d'entrée.

  • _Input_iterator2
    Le type de deuxième itérateur d'entrée.

  • _Binary_operator
    Le type du functor binaire a exécuté par paire sur les éléments des deux plages sources.

  • _Partitioner

  • _First1
    Un itérateur d'entrée adressant la position du premier élément de la première ou uniquement à la plage source à fonctionner sur.

  • _Last1
    Un itérateur d'entrée adressant la position une au delà de le dernier élément dans la première ou uniquement la plage source à fonctionner sur.

  • _Result
    Un itérateur de sortie adressant la position du premier élément de la plage de destination.

  • _Unary_op
    Un objet unaire défini par l'utilisateur de fonction qui est appliqué à chaque élément de la plage source.

  • _Part
    Une référence à l'objet de partitionneur.L'argument peut être un d' constauto_partitioner&, d' conststatic_partitioner&, d' constsimple_partitioner& ou d' affinity_partitioner& si un objet d' affinity_partitioner est utilisé, la référence doit être une référence non constante lvalue, afin que l'algorithme puisse stocker l'état pour que les futures boucles les réutilisent.

  • _First2
    Un itérateur d'entrée adressant la position du premier élément de la deuxième plage source à fonctionner sur.

  • _Binary_op
    Un objet binaire défini par l'utilisateur de fonction qui est appliqué par paire, dans un ordre en avant, aux deux plages sources.

Valeur de retour

Un itérateur de sortie adressant la position une au delà de le dernier élément dans la plage de destination qui accepte les éléments de sortie a transformé par l'objet de fonction.

Notes

auto_partitioner sera utilisé pour les surcharges sans argument explicite de partitionneur.

Pour les itérateurs qui ne prennent pas en charge l'accès aléatoire, uniquement auto_partitioner est pris en charge.

Les surcharges qui prennent la transformation d' _Unary_op d'argument la plage d'entrée dans la plage de sortie en appliquant le functor unaire à chaque élément de la plage d'entrée._Unary_op doit prendre en charge l'opérateur d'appel de fonction avec la signature operator()(T)T est le type valeur de la plage est itérée au sein de.

Les surcharges qui prennent la transformation d' _Binary_op d'argument deux plages d'entrée dans la plage de sortie en appliquant le functor binaire à un élément de la première plage d'entrée et à un élément de la deuxième plage d'entrée._Binary_op doit prendre en charge l'opérateur d'appel de fonction avec la signature operator()(T, U)T, U sont des types valeur des deux itérateurs d'entrée.

Pour plus d'informations, consultez Algorithmes parallèles.

Configuration requise

En-tête : ppl.h

Accès concurrentiel del'espace de noms :

Voir aussi

Référence

concurrency, espace de noms