typestar

Ordenar con rangos en C++

El std::ranges::sort de C++20 toma el contenedor completo y cualquier orden que le des.

#include <algorithm>
#include <functional>
#include <string>
#include <vector>

void sort_both(std::vector<int>& nums, std::vector<std::string>& words) {
    std::ranges::sort(nums);
    std::ranges::sort(nums, std::greater<>{});  // descending
    std::ranges::sort(words, [](const std::string& a, const std::string& b) {
        return a.size() < b.size();
    });
}

Cómo funciona

  1. std::ranges::sort(nums) ordena de forma ascendente sin ningún par de iteradores a la vista.
  2. Pasar std::greater<>{} como comparador voltea la misma llamada a descendente.
  3. Una lambda que compara a.size() con b.size() ordena las cadenas de la más corta en adelante.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
12
Caracteres a escribir
344
Tokens
118
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 101 segundos.

Escribe este fragmento

Paso 1 de 3 en Algoritmos; paso 13 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →