Que tipo de classificação o C ++ usa para executar multisort?

O termo “multisort” não ocorre na biblioteca padrão. Conheço duas definições possíveis para esse termo:

  1. Classificação de matrizes com uma dimensão maior que 1.
  2. Classificando matrizes por vários critérios classificados (portanto, se o primeiro critério considerar os dois itens iguais, passamos para o próximo critério, etc.)

O primeiro caso não é tratado diretamente pela biblioteca padrão. Em vez disso, você deve fazer toda a manipulação de dados – itera pelas sub-matrizes e, em seguida, classifica cada sub-matriz com uma chamada de função separada. Se você quiser fazer algo estranho, como classificar colunas da matriz ao longo de suas diagonais, faça isso criando um contêiner de wrapper personalizado que permite tratar um pedaço diagonal de dados como se fosse um contêiner comum.

O segundo caso é tratado usando operadores de pedidos personalizados. Você pode sobrecarregar o operador <para seu tipo específico ou, se desejar várias maneiras de classificar, passa uma função de comparação personalizada para classificação como seu terceiro argumento.

Aqui está um exemplo:

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

Isso deve classificar uma matriz de números inteiros em ordem decrescente. Uma classificação múltipla teria uma função de comparação um pouco mais complicada.