Menu
Coddy logo textTech

Búsqueda de valores en Map

Parte de la sección Lógica y Flujo del Journey de C++ de Coddy — lección 55 de 56.

challenge icon

Desafío

Fácil

Crea un programa que implemente un sistema de búsqueda inversa para encontrar todas las claves asociadas con un valor específico en un mapa. Este desafío pondrá a prueba tu capacidad para combinar la iteración de mapas, la comparación de valores y la construcción de vectores para buscar a través de pares clave-valor de manera eficiente.

Se proporcionarán las siguientes entradas:

  • Un entero n que representa el número de pares clave-valor que se agregarán al mapa
  • Luego n pares de entradas, cada uno consistente en:
    • Una cadena key que representa la clave
    • Un entero value que representa el valor
  • Un entero targetValue que representa el valor a buscar

Tu programa debe:

  1. Crear una función llamada findKeysWithValue que reciba un std::map<std::string, int> y un entero como parámetros
  2. La función debe devolver un std::vector<std::string> que contenga todas las claves que tienen el valor especificado
  3. En la función principal, crear un mapa y poblarlo con los pares clave-valor de entrada
  4. Llamar a la función findKeysWithValue con el mapa y el valor objetivo
  5. Imprimir primero el recuento de claves coincidentes, luego imprimir cada clave coincidente en una línea separada

Utiliza el siguiente formato de salida exacto:

Primera línea - recuento de claves coincidentes:

Keys found: [number_of_matching_keys]

Luego cada clave coincidente en líneas separadas:

[matching_key_1]
[matching_key_2]
...

Si ninguna clave tiene el valor objetivo, imprime solo:

Keys found: 0

Recuerda que tu función findKeysWithValue debe crear un nuevo vector vacío, iterar a través del mapa usando un bucle for basado en rangos y usar una sentencia if para verificar el valor de cada par contra el objetivo. Cuando se encuentre una coincidencia, agrega la clave (accedida a través de pair.first) al vector de resultados usando push_back(). La función debe devolver el vector que contiene todas las claves coincidentes.

Pruébalo tú mismo

#include <iostream>
#include <map>
#include <vector>
#include <string>
using namespace std;

// TODO: Escribe tu función findKeysWithValue aquí

int main() {
    // Leer el número de pares clave-valor
    int n;
    cin >> n;
    
    // Crear un mapa para almacenar los pares clave-valor
    map<string, int> keyValueMap;
    
    // Leer n pares clave-valor
    for (int i = 0; i < n; i++) {
        string key;
        int value;
        cin >> key >> value;
        keyValueMap[key] = value;
    }
    
    // Leer el valor objetivo a buscar
    int targetValue;
    cin >> targetValue;
    
    // TODO: Llama a tu función findKeysWithValue y almacena el resultado
    
    // TODO: Imprime los resultados en el formato requerido
    // Primero imprime "Keys found: [count]"
    // Luego imprime cada clave coincidente en líneas separadas
    
    return 0;
}

Todas las lecciones de Lógica y Flujo