Partager via


parallel_transform, fonction

Applique un foncteur (fonction objet) spécifié à chaque élément d'une plage source, ou paire de deux plages sources, et copie les valeurs renvoyées du foncteur (fonction objet) dans une plage de destination, en parallèle. Ce fonctionnel est sémantiquement équivalent à 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 itérateur ou seulement celui d'entrée.

  • _Output_iterator
    Type de l'itérateur de sortie.

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

  • _Input_iterator2
    Type du second itérateur d'entrée.

  • _Binary_operator
    Le type de functor binaire exécuté par couple 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 de l'unique plage source à traiter.

  • _Last1
    Un itérateur d'entrée adressant la position de l'élément final dans la première ou dans l'unique plage source à traiter.

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

  • _Unary_op
    Objet de fonction unaire défini par l'utilisateur appliqué à chaque élément dans la plage source.

  • _Part
    Référence au partitioneur d'objet . L'argument peut être l'un des constauto_partitioner&, des conststatic_partitioner&, des constsimple_partitioner& ou des affinity_partitioner&. Si un objet affinity_partitioner est utilisé, la référence doit être une référence l-value non-const , de sorte que l'algorithme puisse signaler l'état des futures boucles de réutilisation.

  • _First2
    Un itérateur d'entrée adressant la position du premier élément de la seconde plage source à traiter.

  • _Binary_op
    Objet binaire de la fonction définie par l'utilisateur qui est appliqué par couple, progressivement, sur les deux plages sources.

Valeur de retour

Un itérateur de sortie adressant la position un après l'élément final dans la plage de destination qui reçoit les éléments de sortie transformés par l'objet fonction.

Notes

auto_partitioner est utilisé pour les surcharges sans argument explicite de partitioneur.

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

Les surcharges prenant l'argument _Unary_op transforment la plage d'entrée en plage de sortie en appliquant la 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 de valeur de la plage à itérer.

Les surcharges prenant l'argument _Binary_op transforment deux plages d'entrée en plage de sortie en appliquant la 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 valeurs des deux itérateurs d'entrée.

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

Configuration requise

En-tête : ppl.h

Espace de noms : concurrency

Voir aussi

Référence

concurrency, espace de noms