Share via


parallel_buffered_sort, fonction

Réorganise les éléments dans une plage spécifiée dans un ordre nondescending, ou selon un critère de classement spécifié par un attribut binaire, en parallèle.Cette fonction est sémantiquement semblable à std::sort car elle est comparer-basé, instable, le tri sur place à la différence qu'elle a besoin d'espace supplémentaire d' O(n) , et nécessite une initialisation par défaut pour les éléments sont triés.

template<
   typename _Random_iterator
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Allocator,
   typename _Random_iterator
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Allocator,
   typename _Random_iterator
>
inline void parallel_buffered_sort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

Paramètres

  • _Random_iterator
    Le type d'itérateur de la plage d'entrée.

  • _Allocator
    Le type d'un allocateur de mémoire compatible STL.

  • _Function
    Le type du comparateur binaire.

  • _Begin
    Un itérateur d'accès aléatoire adressant la position du premier élément de la plage à trier.

  • _End
    Un itérateur d'accès aléatoire adressant la position une au delà de le dernier élément dans la plage à trier.

  • _Alloc
    Une instance d'un allocateur de mémoire compatible STL.

  • _Func
    Un objet défini par l'utilisateur de fonction de prédicat qui définit le critère de comparaison à répondre par des éléments consécutifs dans l'ordre.Un attribut binaire accepte deux arguments et retourne true si satisfaisant et false lorsqu'il est satisfait.Cette fonction de comparateur doit appliquer le classement faible strict aux paires d'éléments de la séquence.

  • _Chunk_size
    La taille de mimimum d'un segment qui sera fractionné en deux pour une exécution en parallèle.

Notes

Toutes les surcharges requièrent l'espace supplémentaire d' n * sizeof(T) , où n est le nombre d'éléments à trier, et T est le type d'élément.Dans la plupart des cas le parallel_buffered_sort affiche une amélioration des performances sur parallel_sort, et vous devez l'utiliser sur le parallel_sort si la mémoire disponible.

Si vous ne fournissez pas de comparateur std::less binaire est utilisé comme valeur par défaut, qui requiert le type d'élément pour fournir l'opérateur operator<().

Si vous ne fournissez pas un type ou une instance de allocateur, l'allocateur de mémoire std::allocator<T> STL est utilisé pour allouer la mémoire tampon.

L'algorithme divise la plage d'entrée en deux segments et divise successivement chaque segment en deux Sub-segments pour une exécution en parallèle.L'argument facultatif _Chunk_size peut être utilisé pour indiquer à l'algorithme qu'il doit des segments de handles de < _Chunk_size de taille séquentiel.

Configuration requise

En-tête : ppl.h

Accès concurrentiel del'espace de noms :

Voir aussi

Référence

concurrency, espace de noms