Nesse artigo do cpp::daily de hoje vamos ver como utilizar o contêiner std::unordered_map
e a classe de template std::numeric_limits
.
std::unordered_map
Seguindo o conceito similar de std::map que vimos anteriormente. std::unordered_map
é um contêiner associado que armazena elementos formados pela combinação de um valor-chave e um valor mapeado.
Algumas diferenças entre std::map
e std::unordered_map
std::map
entrega os dados de forma crescente, já std::unordered_map
não há ordem;std::map
é mais utilizado para dados distantes na memória, já std::unordered_map
para dados mais próximos;std::map
mais utilizado para tipos numéricos, já std::unordered_map
para strings, por exemplo;std::unordered_map
é mais lento que std::map
, mas não em todos.A seguir vamos ver um exemplo básico de uso de std::unordered_map
A saída será:
Perceba que os índices NÃO FORAM exibidos de forma crescente(a menos que adicionássemos na ordem, mas ainda assim seria decrescente), se alterarmos para std::map
os índices aparecerão de forma crescente(independentemente da ordem que fossem adicionados): 8 11 17 . Uma das causas disso também está ferente ao cálculo feito para resgatar os dados da memória, o std::unordered_map
usa Hash Table enquanto o std::map
utiliza BST , para mais detalhes dessas implementações veja as referências ao final desse artigo.
std::numeric_limits
O std::numeric_limits
Fornece informações sobre as propriedades dos tipos aritméticos (integrais ou de ponto flutuante) na plataforma específica para a qual a biblioteca é compilada com uma forma padronizada de consultar várias propriedades de tipos aritméticos (por exemplo, o maior valor possível para o tipo int
é std::numeric_limits<int>::max() )
e entre outras funções.
O fato da compilação poder diferir de acordo com a plataforma e arquitetura, talvez o int
, double
, float
, long int
, … que você esperava para o usuário não será atendido e poderá gerar problemas no seu sofware, logo, você pode criar condições para diversas plataformas e arquiteturas possíveis.
Vamos ver esse código de exemplo que mostra a saída, ao final veremos o resultado que foi compilado em um Gentoo GNU/Linux 64-bit.
No meu caso a saída foi:
Pode e deve ser útil para muitos casos!
Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !
Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:
Acesse o endereço: