Compartir a través de


parallel_radixsort (Función)

Organiza los elementos en un intervalo especificado en no un orden descendente utilizando un algoritmo de ordenación de base.Ésta es una función estable de ordenación que requiere una función de proyección que se pueda elementos de proyecto ordenar en sin signo entero-como claves.Inicialización predeterminada se requiere para los elementos que se ordenan.

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
);

Parámetros

  • _Random_iterator
    El tipo de iterador del intervalo de entrada.

  • _Allocator
    El tipo de un asignador compatible de memoria STL.

  • _Function
    El tipo de función de proyección.

  • _Begin
    Un iterador de acceso aleatorio que dirige la posición del primer elemento del intervalo que se ordenen.

  • _End
    Un iterador de acceso aleatorio que dirige la posición una más allá del último elemento en el intervalo que se ordenen.

  • _Alloc
    Una instancia de un asignador compatible de memoria STL.

  • _Proj_func
    Un objeto definido por el usuario de la función de proyección que convierte un elemento en un valor entero.

  • _Chunk_size
    El tamaño de mimimum de un fragmento que se divide en dos para la ejecución en paralelo.

Comentarios

Todas las sobrecargas requieren el espacio adicional de n * sizeof(T) , donde es el número n de elementos que se van a ordenar, y T es el tipo de elemento.Un functor singular de proyección con la firmaI _Proj_func(T) es necesario devolver una clave cuando se especifica un elemento, donde el tipo T de elemento y I es un unsigned entero-como tipo.

Si no se proporciona una función de proyección, una función de proyección predeterminada que simplemente devuelve el elemento se utiliza para tipos enteros.La función no se compilará si el elemento no es un tipo entero en ausencia de una función de proyección.

Si no se proporciona un tipo o una instancia del asignador, el asignador std::allocator<T> de memoria STL se utiliza para asignar el búfer.

El algoritmo divide el intervalo de entrada en dos partes y sucesivamente divide cada fragmento en dos sub-pedazos para la ejecución en paralelo.El argumento opcional _Chunk_size se puede utilizar para indicar al algoritmo que debe partes de los identificadores de < _Chunk_size de tamaño en serie.

Requisitos

Encabezado: ppl.h

Simultaneidad deespacio de nombres:

Vea también

Referencia

concurrency (Espacio de nombres)