Compartir a través de


parallel_buffered_sort (Función)

Organiza los elementos en un intervalo especificado en un orden no descendente, o de acuerdo con un criterio de ordenación especificado por un predicado binario, en paralelo. Esta función es semánticamente similar a std::sort que se trata de una ordenación basada en comparación, inestable, en contexto salvo que necesita espacio adicional O(n) y requiere una inicialización predeterminada para los elementos que se ordenan.

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

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 comparador binario.

  • _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.

  • _Func
    Un objeto definido por el usuario de la función de predicado que define el criterio de comparación que se completará por los elementos sucesivos del orden. Un predicado binario toma dos argumentos y devuelve true cuando se cumple y false cuando no se cumple. Esta función de comparador debe imponer orden débil estricta a pares de elementos de la secuencia.

  • _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. En la mayoría de los casos el parallel_buffered_sort mostrará una mejora de rendimiento sobre parallel_sort, y debe utilizarlo sobre parallel_sort si tiene la memoria disponible.

Si no proporciona un comparador std::less binario se utiliza como valor predeterminado, que requiere el tipo de elemento proporcionar el operador operator<().

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- fragmentos 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 tamaño <_Chunk_size en serie.

Requisitos

Encabezado: ppl.h

Espacio de nombres: simultaneidad

Vea también

Referencia

concurrency (Espacio de nombres)