Função C++ Unordered_Map::Find()

Funcao C Unordered Map Find



C++ é conhecido por sua poderosa e versátil biblioteca de modelos padrão (STL), fornecendo aos desenvolvedores um amplo conjunto de contêineres, iteradores, algoritmos e funções altamente eficientes e prontos para uso. Entre eles, o “unordered_map” se destaca como um ator-chave no armazenamento eficiente de valores-chave e no acesso de alta velocidade, tornando-o uma excelente escolha para aplicações onde a recuperação rápida é fundamental. No coração deste “unordered_map”, a função unordered_map::find() é um instrumento vital. Essa estrutura de dados é otimizada para acesso de alta velocidade e armazenamento de valores-chave. Este artigo oferece um exame abrangente da função unordered_map::find() revelando sua sintaxe e parâmetros com a ajuda de exemplos ilustrativos.

Compreendendo o Unordered_Map::Find()

A função unordered_map::find() foi projetada para localizar um elemento que está associado a uma chave especificada dentro de um “unordered_map”. Sua declaração varia dependendo se o objeto é qualificado como constante ou não, proporcionando flexibilidade em seu uso.

iterador encontrar ( const Tipo de chave & k ) ;

Isso é usado quando o “unordered_map” não é qualificado como constante. Este código retorna um iterador que aponta para o elemento encontrado.







const_iterator encontrar ( const Tipo de chave & k ) const ;

Esta versão é aplicável quando o “unordered_map” é qualificado como constante. Ele retorna um iterador constante com comportamento semelhante à versão não constante.



Parâmetros:



É necessário um único parâmetro, “k”, que é a chave a ser pesquisada dentro do “unordered_map”.





Valor de retorno:

O valor de retorno depende da qualificação do objeto “unordered_map”.

O método retorna um iterador não constante se o objeto não for constantemente qualificado.



Se o objeto for qualificado como constante, o método retornará um iterador constante.

Complexidade de tempo:

A complexidade de tempo de std::unordered_map::find() é crucial para compreender sua eficiência:

No caso médio, a complexidade do tempo é constante (O(1)), tornando-o altamente eficiente para casos de uso típicos.

Na pior das hipóteses, a complexidade do tempo torna-se linear (O(n)). No entanto, este cenário é raro na prática.

Exemplo 1:

Vamos explorar um exemplo prático para ilustrar o uso e os benefícios de unordered_map::find(). Neste exemplo, um “unordered_map” é criado com os caracteres como chaves e os números inteiros correspondentes como valores. A função find() localiza o elemento que está vinculado à chave “p”. O iterador “ittr” está vinculado ao elemento encontrado e seus dados são impressos no console. Veja o seguinte código:

#include

#include

usando namespace std ;

interno principal ( vazio ) {

mapa_não ordenado < Caracteres , interno > descompactar = {

{ 'Em' , 9 } ,

{ 'a' , 6 } ,

{ 'p' , 8 } ,

{ 'eu' , 3 } ,

{ 'é' , 4 } } ;

auto ittr = desemp. encontrar ( 'p' ) ;

corte << 'Iterador' ' << ittr-> primeiro << ' 'aponta para =' << ittr -> segundo << fim ;

retornar 0 ; }

Vamos detalhar o código para entendê-lo melhor e de forma clara:

#include

#include

Os arquivos de cabeçalho necessários estão incluídos: para operações de entrada/saída e para usar o contêiner “unordered_map”.

usando namespace std ;

O namespace “std” simplifica o código. Ele permite que você use os elementos da biblioteca C++ padrão sem prefixá-los com “std::”.

mapa_não ordenado < Caracteres , interno > descompactar = { { 'Em' , 9 } , { 'a' , 6 } , { 'p' , 8 } , { 'eu' , 3 } , { 'é' , 4 } } ;

Um “unordered_map” chamado “um” é criado com os caracteres ('w', 'a', 'p', 'm', 's') como chaves e os números inteiros correspondentes (9, 6, 8, 3, 4 ) como valores.

auto ittr = desemp. encontrar ( 'p' ) ;

A função find() é usada para procurar o elemento com a chave “p” no “unordered_map” que é “unomp”. O iterador “ittr” aponta para o elemento identificado.

corte << 'Iterador' ' << ittr-> primeiro << ' 'aponta para =' << ittr -> segundo << fim ;

O conteúdo apontado pelo iterador é impresso no console. Imprime a chave (“p”) e o valor associado (8) neste caso.

retornar 0 ;

O programa termina, retornando 0 para indicar uma execução bem-sucedida.

A saída do código é fornecida a seguir para sua referência:

Este código é um exemplo simples de utilização de unordered_map::find() para pesquisar e acessar com eficiência os elementos dentro de um “unordered_map”. O iterador fornece uma maneira conveniente de acessar a chave e o valor associado do elemento encontrado.

Exemplo 2:

Aqui está outro exemplo simples da função unordered_map::find(). Este código demonstra o uso de “unordered_map” para armazenar os valores booleanos associados a chaves inteiras e, em seguida, utiliza a função find() para verificar a existência de chaves específicas. Vamos ver o código a seguir e entender como ele funciona:

#incluir

usando namespace std ;

interno principal ( ) {

mapa_não ordenado < interno , bool > descompactar ;

descompactar [ 2 ] = verdadeiro ;

descompactar [ 67 ] = falso ;

descompactar [ Quatro cinco ] = verdadeiro ;

descompactar [ 98 ] = falso ;

se ( desemp. encontrar ( 67 ) == desemp. fim ( ) )

corte << 'Elemento não encontrado' << fim ;

outro

corte << 'Elemento encontrado' << fim ;

se ( desemp. encontrar ( 42 ) == desemp. fim ( ) )

corte << 'Elemento não encontrado' << fim ;

outro

corte << 'Elemento encontrado' << fim ;

retornar 0 ;

}

Aqui está uma descrição detalhada do código:

#incluir

Esta linha inclui um arquivo de cabeçalho que cobre as bibliotecas C++ mais padrão que são frequentemente usadas em programação competitiva. No entanto, em um desenvolvimento C++ regular, é recomendado incluir cabeçalhos específicos.

mapa_não ordenado < interno , bool > descompactar ;

Um “unordered_map” chamado “unomp” é criado com chaves inteiras e valores booleanos.

descompactar [ 2 ] = verdadeiro ;

descompactar [ 67 ] = falso ;

descompactar [ Quatro cinco ] = verdadeiro ;

descompactar [ 98 ] = falso ;

Os pares chave-valor são inseridos no “unordered_map”. Cada chave (inteiro) está associada a um valor booleano.

se ( desemp. encontrar ( 67 ) == desemp. fim ( ) )

corte << 'Elemento não encontrado' << fim ;

outro

corte << 'Elemento encontrado' << fim ;

A função find() é empregada na condição if-else para procurar chaves específicas (67 e 42) dentro do “unordered_map”. Se a chave for encontrada, “Elemento encontrado” será impresso. Caso contrário, será impresso “Elemento não encontrado”. Veja a seguinte saída:

Este código mostra o uso básico de “unordered_map” e a função find() para determinar a presença ou ausência de chaves específicas no mapa.

Exemplo 3:

Vamos explorar outro exemplo que demonstra a descoberta de um valor fornecendo uma entrada em tempo de execução. Este programa simples utiliza um “mapa_não ordenado” para armazenar os nomes (como chaves) e valores numéricos associados (neste caso, representando alguns atributos). Em seguida, ele solicita que o usuário insira um nome, pesquise esse nome no mapa usando a função find() e imprima o valor associado se o nome for encontrado. O código é fornecido a seguir para sua referência:

#include

#incluir

#include

usando namespace std ;

interno principal ( ) {

padrão :: mapa_não ordenado < padrão :: corda , dobro > descompactar = {

{ 'Herry' , 23 } ,

{ 'Outros' , 7.4 } ,

{ 'Kalsoom' , 1.2 } } ;

corda quem ;

corte << 'Quem é que voce esta procurando? ' ;

Obter linha ( comendo , Quem ) ;

mapa_não ordenado < corda , dobro >:: const_iterador encontrar = desemp. encontrar ( Quem ) ;

se ( encontrar == desemp. fim ( ) )

corte << 'não encontrado' ;

outro

corte << fim << encontrar -> primeiro << ' é ' << encontrar -> segundo << fim ;

retornar 0 ;

}

A seguir está o detalhamento do código para sua compreensão:

mapa_não ordenado < corda , dobro > descompactar = { } ;

Um “unordered_map” chamado “unomp” é criado com chaves de string (nomes) e valores duplos.

corda quem ;

O usuário é solicitado a inserir um nome na tela e a entrada é armazenada na variável de string “quem”.

mapa_não ordenado < corda , dobro >:: const_iterador encontrar = desemp. encontrar ( Quem ) ;

A função find() é usada para pesquisar o nome inserido no “unordered_map”. O resultado é armazenado no iterador “fnd”.

se ( encontrar == desemp. fim ( ) )

corte << 'não encontrado' ;

outro

corte << fim << encontrar -> primeiro << ' é ' << encontrar -> segundo << fim ;

Se o iterador “fnd” chegar ao final do “unordered_map” (end()), significa que o nome não foi encontrado e “not found” será impresso. Caso contrário, o nome e o valor associado serão impressos. Aqui está a saída do código:

Este código atua essencialmente como uma ferramenta simples de pesquisa de nome usando um “unordered_map”. Ele recebe a entrada do usuário, procura o nome no mapa e fornece o valor associado se o nome for encontrado.

Conclusão

A função unordered_map::find() em C++ fornece um mecanismo poderoso para localizar com eficiência os elementos dentro dos contêineres “unordered_map”. Sua complexidade de tempo médio constante o torna uma escolha preferida para operações de pesquisa em cenários onde os pares chave-valor devem ser acessados ​​rapidamente. Os exemplos fornecidos mostram seu uso prático, enfatizando sua simplicidade e eficácia. Concluindo, dominar a função unordered_map::find() aprimora a capacidade de um programador C++ de aproveitar todo o potencial dos contêineres “unordered_map”, contribuindo para a criação de aplicativos otimizados e de alto desempenho.