typestar

find y count en C++

Tres preguntas sobre un vector, cada una resuelta con una llamada a un algoritmo en vez de un bucle a mano.

#include <algorithm>
#include <vector>

bool found_enough(const std::vector<int>& v, int target) {
    auto hit = std::ranges::find(v, target);  // iterator, or end()
    auto zeros = std::ranges::count(v, 0);
    auto evens = std::ranges::count_if(v, [](int x) { return x % 2 == 0; });
    return hit != v.end() && zeros == 0 && evens >= 2;
}

Cómo funciona

  1. std::ranges::find devuelve un iterador a la primera coincidencia, o v.end() si no hay ninguna.
  2. std::ranges::count cuenta coincidencias exactas; aquí verifica que ningún elemento sea 0.
  3. std::ranges::count_if toma una lambda y cuenta los pares; las tres respuestas se juntan en un bool.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
9
Caracteres a escribir
327
Tokens
111
Ritmo de tres estrellas
75 tpm

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

Escribe este fragmento

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

← Anterior Siguiente →