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.
Desafío
FácilCrea 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
nque representa el número de pares clave-valor que se agregarán al mapa - Luego
npares de entradas, cada uno consistente en:- Una cadena
keyque representa la clave - Un entero
valueque representa el valor
- Una cadena
- Un entero
targetValueque representa el valor a buscar
Tu programa debe:
- Crear una función llamada
findKeysWithValueque reciba unstd::map<std::string, int>y un entero como parámetros - La función debe devolver un
std::vector<std::string>que contenga todas las claves que tienen el valor especificado - En la función principal, crear un mapa y poblarlo con los pares clave-valor de entrada
- Llamar a la función
findKeysWithValuecon el mapa y el valor objetivo - 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: 0Recuerda 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
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tarea