¿Qué tipo de ordenación usa C ++ para hacer múltiples clasificaciones?

El término “multisort” no aparece en la biblioteca estándar. Sé de dos posibles definiciones para este término:

  1. Clasificación de matrices con una dimensión superior a 1.
  2. Clasificación de matrices por múltiples criterios clasificados (por lo tanto, si el primer criterio considera los dos elementos iguales, pasamos al siguiente criterio, etc.)

El primer caso no es manejado directamente por la biblioteca estándar en absoluto. En su lugar, debe hacer toda la manipulación de datos usted mismo: itera a través de los subconjuntos y luego ordena cada subconjunto con una llamada de función separada. Si desea hacer algo extraño, como ordenar las columnas de la matriz a lo largo de sus diagonales, lo haría creando un contenedor contenedor personalizado que le permita tratar una porción diagonal de datos como si fuera un contenedor normal.

El segundo caso se maneja utilizando operadores de pedidos personalizados. Puede sobrecargar el operador <para su tipo específico o, si desea varias formas de ordenar, pasar una función de comparación personalizada a ordenar como su tercer argumento.

Aquí hay un ejemplo:

vector vec = …;
sort (vec.begin (), vec.end (),
[] (int a, int b) -> bool {return a> b; });

Esto debería ordenar una serie de enteros en orden descendente. Una clasificación múltiple tendría una función de comparación un poco más complicada.