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!