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
- Construir desde
begin()yend()deduplica el vector de un solo golpe. insertdevuelve un par; los enlaces estructurados lo nombran[pos, inserted].- Cuando
insertedes false el valor ya estaba presente, yerase(pos)lo elimina. size()cuenta valores distintos, así que los duplicados de la entrada nunca lo inflan.
Palabras clave y builtins usados aquí
autoconstifintreturnstatic_cast
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.
Paso 3 de 3 en Contenedores; paso 9 de 27 en Fundamentos del lenguaje.