Je ne comprends pas pourquoi multimap existe si on peut créer des cartes de vecteurs ou des cartes d'ensembles. Pour moi, les seules différences sont :
- en utilisant
equal_range
en multimap pour obtenir les éléments d'une clé et en map de vecteurs on utilise simplement[]
et ont un vecteur d'éléments. - en utilisant
multimap.insert(make_pair(key,value))
dans multimap pour ajouter des éléments etmap_of_vectors[key].push_back(value)
en carte de vecteurs.
Alors pourquoi utiliser multimap ? Pour moi, il est préférable d'avoir un vecteur que deux itérateurs pour obtenir toutes les valeurs d'une clé.
Cette question s'applique également à unordered_map of vectors et unordered_multimap.
11 votes
Je dois admettre que je n'ai jamais vraiment compris le but de
multimap
:/0 votes
J'interviens un peu tard dans la question, mais les cartes multiples consomment aussi beaucoup plus de mémoire que les cartes de vecteurs en raison des pointeurs supplémentaires. La seule raison pour laquelle je les utiliserais est si je veux garder la clé de chaque élément (en faisant
push_back
vous ne le garderez pas)0 votes
Multimap est idéal si vous souhaitez non seulement garder la trace des clés dupliquées de valeurs différentes, mais aussi supprimer toute paire clé/valeur à tout moment. Une carte de vecteurs ne convient pas pour cela, et bien que vous puissiez utiliser une carte de listes, il est plus pratique d'utiliser une multimap.
1 votes
Si je comprends votre point de vue (et je n'ai pas non plus tendance à utiliser multimap), on peut dire à peu près la même chose de
map<K, V>
vs.set<pair<K, V>, cmp_first<K, V>>
où cmp_first compare les.first
membre.1 votes
Carte des ensembles : stackoverflow.com/questions/8602068/