Quel est l'avantage du multi-table sur la carte de vecteurs?

Je ne comprends pas pourquoi multimap existe que si nous pouvons créer une carte de vecteurs ou de carte de jeux.
Pour moi, les seules différences sont:

  • à l'aide de equal_range dans multimap pour obtenir des éléments de clé et la carte de vecteurs nous utilisons simplement [] opérateur et ont vecteur d'éléments.
  • à l'aide de multimap.insert(make_pair(key,value)) dans multimap pour ajouter des éléments et map_of_vectors[key].push_back(value) dans la carte de vecteurs.

Alors pourquoi utiliser multimap? Pour moi, c'est mieux d'avoir un vecteur de deux itérateurs pour obtenir toutes les valeurs d'une clé.

Cette question s'applique aussi à unordered_map de vecteurs et unordered_multimap.

  • Je dois avouer que je n'ai jamais vraiment compris le but de multimap :/
  • J'ai peu de retard dans la question, mais aussi multimap consomme beaucoup plus de mémoire que la carte de vecteurs en raison du supplément de pointeurs. La seule raison pour laquelle je préfère les utiliser si je veux garder la clé de chaque élément (faire push_back vous ne gardez pas)
  • Multimap est si grande que non seulement vous voulez garder une trace de dupliquer des clés de différentes valeurs, mais vous souhaitez également supprimer toutes les paires clé/valeur à une notification de moments. Une carte de vecteurs n'est pas adapté pour ça, et même si vous pouvez utiliser une carte de listes, il est plus pratique d'utiliser une multimap.
  • Alors que je vois votre point de vue (et je n'ai pas tendance à utiliser multimap), à propos de la même chose peut être dit à propos de map<K, V> vs set<pair<K, V>, cmp_first<K, V>> où cmp_first compare les .first membre.
  • carte de jeux: stackoverflow.com/questions/8602068/...