parallel_radixsort, fonction
Réorganise des éléments dans une plage spécifiée dans un ordre décroissant non à l'aide d'un algorithme de tri de base.Il s'agit d'une fonction de tri stable qui requiert une fonction de projection qui peut des éléments de projet trier en clés comme un entier non signé.L'initialisation par défaut est requise pour les éléments sont triés.
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
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 de la fonction de projection._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._Proj_func
Un objet défini par l'utilisateur de fonction de projection qui convertit un élément dans une valeur intégrale._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.Un functor unaire de projection avec la signatureI _Proj_func(T) est requis pour retourner une clé une fois donné un élément, où T est le type d'élément et I est un type comme 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 pourra pas si l'élément n'est pas un type intégral en l ' absence d'une fonction de projection.
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 :