C++ es mejor conocido por su potente y versátil Biblioteca de plantillas estándar (STL), que proporciona a los desarrolladores un amplio conjunto de contenedores, iteradores, algoritmos y funciones eficientes y listos para usar. Entre ellos, «unordered_map» desempeña un papel clave en el almacenamiento eficiente de valores clave y el acceso de alta velocidad, lo que lo convierte en una excelente opción para aplicaciones donde la recuperación rápida es fundamental. En el corazón de este «unordered_map», la función unordered_map::find() es una herramienta importante. Esta estructura de datos está optimizada para acceso de alta velocidad y almacenamiento de valores clave. Este artículo proporciona un examen exhaustivo de la función unordered_map::find() al revelar su sintaxis y parámetros con la ayuda de ejemplos ilustrativos.
Tabla de Contenidos
Entendiendo Unordered_Map::Find()
La función unordered_map::find() está diseñada para localizar el elemento asociado con la clave especificada en «unordered_map». Su declaración cambia dependiendo de si el objeto está calificado de forma constante, lo que proporciona flexibilidad en su uso.
Búsqueda de iterador (constante Tipo de clave& k);
Se utiliza cuando «unordered_map» no es un límite constante. Este código devuelve un iterador que apunta al elemento encontrado.
Búsqueda de iterador constante (constante Tipo de clave& k) constante;
Esta versión se aplica cuando «unordered_map» está calificado de manera constante. Devuelve un iterador constante que se comporta como la versión no constante.
parámetro:
Se necesita un solo parámetro «k», que es la clave para buscar en el «unordered_map».
Valor de retorno:
El valor devuelto depende de la elegibilidad del objeto «unordered_map».
Si el objeto no se califica constantemente, este método devuelve un iterador no constante.
Si el objeto está calificado como constante, este método devuelve un iterador constante.
complejidad del tiempo:
La complejidad temporal de std::unordered_map::find() es crucial para comprender su eficiencia:
En el caso promedio, la complejidad del tiempo es constante (O(1)), lo que lo hace muy eficiente para casos de uso típicos.
En el peor de los casos, la complejidad temporal se vuelve lineal (O(n)). Sin embargo, este escenario es poco común en la práctica.
Ejemplo 1:
Exploremos un ejemplo práctico para ilustrar el uso y las ventajas de unordered_map::find(). En este ejemplo, se crea un «mapa_desordenado» con caracteres como claves y los enteros correspondientes como valores. La función find() localiza el elemento vinculado a la clave «p». El iterador «ittr» se conecta al elemento encontrado e imprime sus datos en la consola. Por favor mire el siguiente código:
#incluir
Usar espacio de nombres estándar;
entero principal(blanco) {
mapeo desordenadopersonaje, entero> lianop = {
{'w', 9},
{'A', 6},
{'pag', 8},
{'I', 3},
{de, 4} };
auto itter = Lianop.Buscar('pag');
kut «iterador»«Primero «punto=» itter->segundo endel;
devolver ;}
Analicemos el código para entenderlo mejor:
Incluye los archivos de encabezado necesarios:
El espacio de nombres «std» simplifica la codificación. Le permite utilizar elementos de la biblioteca estándar de C++ sin anteponerles el prefijo «std::».
mapeo desordenadopersonaje, entero> lianop = { {'w', 9}, {'A', 6}, {'pag', 8}, {'I', 3}, {de, 4} };
Cree un «mapa_unordered» llamado «um» usando caracteres ('w', 'a', 'p', 'm', 's') como claves y los enteros correspondientes (9, 6, 8, 3, 4)” ) como el valor.
auto itter = Lianop.Buscar('pag');
La función find() se utiliza para buscar el elemento con la clave «p» en «unordered_map», que es «unomp». El iterador «ittr» apunta al elemento identificado.
kut «iterador»«Primero «punto=» itter->segundo endel;
Los contenidos señalados por el iterador se imprimen en la consola. En este ejemplo, imprime la clave («p») y el valor asociado (8).
El programa finaliza y devuelve 0, lo que indica una ejecución exitosa.
El resultado del código del programa es el siguiente para su referencia:
Este código es un ejemplo simple del uso de unordered_map::find() para buscar y acceder de manera eficiente a elementos en un «unordered_map». Los iteradores proporcionan una manera conveniente de acceder a la clave y al valor asociado de un elemento encontrado.
Ejemplo 2:
Este es otro ejemplo simple de la función unordered_map::find(). Este código demuestra cómo usar «unordered_map» para almacenar valores booleanos asociados con claves enteras y luego usar la función find() para verificar si existe una clave específica. Echemos un vistazo al código a continuación y veamos cómo funciona:
Usar espacio de nombres estándar;
entero principal() {
mapeo desordenadoentero, valor de Bollinger> lianop;
lianop[2] = real;
lianop[67] = Incorrecto;
lianop[45] = real;
lianop[98] = Incorrecto;
si (Lianop.Buscar(67) == Lianop.fin())
kut «Elemento no encontrado»endel;
Otros
kut «Elemento encontrado»endel;
si (Lianop.Buscar(42) == Lianop.fin())
kut «Elemento no encontrado»endel;
Otros
kut «Elemento encontrado»endel;
devolver ;
}
Aquí hay una descripción detallada del código:
Esta línea contiene un archivo de encabezado que cubre la mayoría de las bibliotecas C++ estándar que se utilizan a menudo en la programación competitiva. Sin embargo, en el desarrollo normal de C++, se recomienda incluir encabezados específicos.
mapeo desordenadoentero, valor de Bollinger> lianop;
El «unordered_map» llamado «unomp» se crea utilizando claves enteras y valores booleanos.
lianop[67] = Incorrecto;
lianop[45] = real;
lianop[98] = Incorrecto;
Los pares clave-valor se insertan en «unordered_map». Cada clave (entero) está asociada a un valor booleano.
kut «Elemento no encontrado» endel;
Otros
kut «Elemento encontrado» endel;
La función find() se utiliza en una condición if-else para buscar claves específicas (67 y 42) en el «unordered_map». Si se encuentra la clave, se imprime «Elemento encontrado». De lo contrario, se imprimirá «Elemento no encontrado». Vea el siguiente resultado:
Este código muestra el uso básico de «unordered_map» y la función find() para determinar si existe una clave específica en el mapa.
Ejemplo 3:
Exploremos otro ejemplo que demuestra cómo encontrar un valor proporcionando información en tiempo de ejecución. Este sencillo programa utiliza un «mapa_desordenado» para almacenar nombres (como claves) y valores asociados (en este caso, que representan algunos atributos). Luego solicita un nombre al usuario, utiliza la función buscar() para buscar el nombre en el mapa y, si se encuentra el nombre, imprime el valor asociado. El código del programa se proporciona a continuación para su referencia:
#incluir
#incluir
Usar espacio de nombres estándar;
entero principal (){
estándar::mapeo desordenadoestándar::Cadena,doble> lianop = {
{«Enrique»,2.3},
{«André»,7.4},
{«Karsum»,1.2} };
cadena quien;
kut «¿A quién estás buscando? «;
obtener línea (acre,Organización Mundial de la Salud);
mapeo desordenadoCadena,doble>::iterador constante Descubrir = Lianop.Buscar (Organización Mundial de la Salud);
si ( Descubrir == Lianop.fin() )
kut «extraviado»;
Otros
kut endel Descubrir->primero » Sí» Descubrir->segundoendel;
devolver ;
}
El siguiente es un desglose del código del programa para su comodidad:
mapeo desordenadoCadena, doble> lianop = {};
Crea un «mapa_unordered» llamado «unomp» usando una clave de cadena (nombre) y un valor doble.
Se le pedirá al usuario que ingrese un nombre en la pantalla y la entrada se almacenará en la variable de cadena «quién».
mapeo desordenadoCadena, doble>::iterador constante Descubrir = Lianop.Buscar(Organización Mundial de la Salud);
La función find() se utiliza para buscar el nombre de entrada en «unordered_map». El resultado se almacena en el iterador «fnd».
kut «extraviado»;
Otros
kut endel Descubrir->primero » Sí» Descubrir->segundo endel;
Si el iterador «fnd» llega al final de «unordered_map» (end()), significa que no se encontró el nombre e imprime «not find». De lo contrario, se imprimen el nombre y su valor asociado. Esta es la salida del código:
Este código actúa esencialmente como una herramienta de búsqueda de nombres simple usando «unordered_map». Acepta entradas del usuario, busca un nombre en el mapa y proporciona un valor asociado cuando se encuentra un nombre.
en conclusión
La función unordered_map::find() en C++ proporciona un poderoso mecanismo para localizar eficientemente elementos en el contenedor «unordered_map». Su complejidad de tiempo promedio constante lo convierte en la primera opción para operaciones de búsqueda en escenarios donde se requiere un acceso rápido a pares clave-valor. Se proporcionan ejemplos que demuestran su uso práctico, destacando su sencillez y eficacia. En resumen, dominar la función unordered_map::find() puede mejorar la capacidad de los programadores de C++ para explotar plenamente el potencial del contenedor «unordered_map», ayudando a crear aplicaciones optimizadas y de alto rendimiento.