parallel_radixsort, fonction
Organise les éléments dans une plage spécifiée dans un ordre non décroissant à l'aide d'un algorithme de tri de base. C'est une fonction de tri stable nécessitant une fonction de projection qui peut projeter les éléments à trier en clés similaires à des entiers non signés. L'initialisation par défaut est requise pour les éléments à trier.
template<
typename _Random_iterator
>
inline void parallel_radixsort(
const _Random_iterator &_Begin,
const _Random_iterator &_End
);
template<
typename _Allocator,
typename _Random_iterator
>
inline void parallel_radixsort(
const _Random_iterator &_Begin,
const _Random_iterator &_End
);
template<
typename _Allocator,
typename _Random_iterator
>
inline void parallel_radixsort(
const _Allocator& _Alloc,
const _Random_iterator &_Begin,
const _Random_iterator &_End
);
template<
typename _Random_iterator,
typename _Function
>
inline void parallel_radixsort(
const _Random_iterator &_Begin,
const _Random_iterator &_End,
const _Function &_Proj_func,
const size_t _Chunk_size = 256 * 256
);
template<
typename _Allocator,
typename _Random_iterator,
typename _Function
>
inline void parallel_radixsort(
const _Random_iterator &_Begin,
const _Random_iterator &_End,
const _Function &_Proj_func,
const size_t _Chunk_size = 256 * 256
);
template<
typename _Allocator,
typename _Random_iterator,
typename _Function
>
inline void parallel_radixsort(
const _Allocator& _Alloc,
const _Random_iterator &_Begin,
const _Random_iterator &_End,
const _Function &_Proj_func,
const size_t _Chunk_size = 256 * 256
);
Paramètres
_Random_iterator
Type d'itérateur de la plage d'entrée._Allocator
Le type d'un allocateur de mémoire compatible STL._Function
Type de la fonction de projection._Begin
Un itérateur à accès aléatoire qui adresse la position du premier élément dans la plage de tri._End
Un itérateur à accès aléatoire qui adresse la position un après l'élément final dans la plage de tri._Alloc
Une instance d'un allocateur de mémoire compatible STL._Proj_func
Un objet de la fonction de projection définie par l'utilisateur qui convertit un élément en une valeur intégrale._Chunk_size
La taille de mimimum d'un segment qui est coupé en deux pour une exécution parallèle.
Notes
Toutes les surcharges nécessitent de l'espace supplémentaire n * sizeof(T), où n est le nombre d'éléments à trier et T est le type des éléments. Un functor unaire de projection à la signatureI _Proj_func(T) est requis pour retourner une clé lorsqu'un élément est donné, où T est le type d'élément et I est un type d'un entier non signé.
Si vous ne fournissez pas une fonction de projection, une fonction de projection par défaut qui retourne simplement l'élément est utilisée pour les types intégraux. La fonction ne compilera pas si l'élément n'est pas un type intégral en l'absence de fonction de projection.
Si vous ne fournissez pas un type d'allocateur ou une instance, l'allocateur de mémoire STL std::allocator<T> est utilisée pour allouer de la mémoire tampon.
L'algorithme divise la plage d'entrée en deux segments et divise successivement chaque segment en deux sous-segments pour l'exécution en parallèle. L'argument facultatif _Chunk_size peut être utilisé pour indiquer à l'algorithme qu'il doit manipuler des segments de descripteurs de taille < _Chunk_size séquentiel.
Configuration requise
En-tête : ppl.h
Espace de noms : concurrency