std::map vs std::unordered_map

Qual escolher? Vou mostrar abaixo as vantagens e desvantagens de cada estrutura de dados.

Diferença

A std::map é ordenada pela inserção de valores, a std::unordered_map não garante a ordenação devido seu algoritmo de hash.

Uso

É muito simples usar essas duas estruturas de dados. Aprendendo usar uma delas, você aprende usar as duas.

#include <map>
#include <unordered_map>
int main(){
  // declaracao
  std::map<int,int> testmap;
  std::unordered_map<int,int> testumap;

  // armazenamento
  testmap[10]=100;
  testumap[10]=100;

  // consulta
  int res = testmap[10];
  res = testumap[10];

  return 0;
}

Uso de Memória

O uso de memória da std::unordered_map é maior devido a falta de ordenação.

Performance

A estrutura mais rápida é a std::unordered_map, devido seu cálculo de armazenamento de dados ser muito otimizado. Performando nas operações de armazenamento e consulta.

Conclusão

Caso tenha pouca memória use std::map, mas se preferir por performance use std::unordered_map.

Links de Refência

http://en.cppreference.com/w/cpp/container/map
http://en.cppreference.com/w/cpp/container/unordered_map
http://supercomputingblog.com/windows/ordered-map-vs-unordered-map-a-performance-study/

Tem alguma dúvida ou sugestão? Deixe nos comentários!

You may also like...

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *