typestar

Sets y unicidad en C++

std::set guarda cada valor una sola vez, ordenado, y su insert informa si hizo algo.

#include <set>
#include <vector>

int unique_count(const std::vector<int> &values) {
    std::set<int> seen(values.begin(), values.end());
    auto [pos, inserted] = seen.insert(42);
    if (!inserted) {                  // 42 was already in the set
        seen.erase(pos);
    }
    return static_cast<int>(seen.size());
}

Cómo funciona

  1. Construir desde begin() y end() deduplica el vector de un solo golpe.
  2. insert devuelve un par; los enlaces estructurados lo nombran [pos, inserted].
  3. Cuando inserted es false el valor ya estaba presente, y erase(pos) lo elimina.
  4. size() cuenta valores distintos, así que los duplicados de la entrada nunca lo inflan.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
11
Caracteres a escribir
296
Tokens
86
Ritmo de tres estrellas
75 tpm

Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 69 segundos.

Escribe este fragmento

Paso 3 de 3 en Contenedores; paso 9 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →