IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

Les multimap, ca sert à quoi?


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Les multimap, ca sert à quoi?
    Tout est dans le titre...

    Pour moi un multimap, c'est soit un multiset de paires, soit un vecteur trié de paires... (on pourrait d'ailleurs s'interroger sur l'utilité du multiset, soit dit en passant, mais bon...)

    L'intérêt de la map, qui est la capacité de récupérer par [] est absente du multi map, et les interfaces et leurs garanties sont les mêmes que pour le multiset, et pour le vecteur + algorithmes sur conteneurs triés.

    Alors, à votre avis, les multimaps, ca sert à quoi (sinon à préserver la symétrie avec les set...)?

    Francois

  2. #2
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Naivement, je dirais que la recherche sur une clée dans une map est globalement plus efficace que dans le cas des alternatives que tu donnes?

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Quand la valeur est séparée de sa clé, on peut la modifier sans risquer d'invalider l'ordre dans le conteneur (donc sans avoir à retirer l'élément, le modifier puis le réinsérer).

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    Quand la valeur est séparée de sa clé, on peut la modifier sans risquer d'invalider l'ordre dans le conteneur (donc sans avoir à retirer l'élément, le modifier puis le réinsérer).
    Ca ne serait pas pareil avec un vector de paires?

    Imaginons qu'on ait un vector<pair<clef,valeur> >, trié par clefs, avec des ex aequos (comme un multimap). Je peux à tout moment modifier les valeurs (v[i].second) sans remettre en cause l'ordre des clefs. En terme de complexité, c'est exactement le même travail que pour un multimap : une recherche "triée" (lg(N)+M, M nb d'ex aequos) pour trouver l'élément, et une affectation.

    Pour un multiset, je suis d'accord. Pour avoir une structure équivalente, il faudrait ajouter aux éléments du multiset un pointeur vers une "zone valeur" modifiable.

    Francois

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    vector et multimap ne représentent pas la même structure de donnée, même si on peut avoir une recherche en ln(n) avec un vector trié il reste des différences sur les autres opérations, comme l'insertion ou la suppression par exemple.

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Petit aperçu des containers de la stl ici http://www.cplusplus.com/reference/stl/
    Il y en a un autre dans la faq du forum.

    Je n'utilise pas l'operator[] avec std::map mais il est vrai qu'on peut se demander pourquoi il n'a pas été laissé aussi dans (multi)set et multimap.

Discussions similaires

  1. Ca sert à quoi de connecter les périph en blutooth
    Par heliy dans le forum Mac OS X
    Réponses: 4
    Dernier message: 07/05/2013, 07h17
  2. Les skins RichFaces, ça sert à quoi ?
    Par thierryler dans le forum Frameworks Web
    Réponses: 4
    Dernier message: 04/11/2010, 15h21
  3. Les hachages : ca sert à quoi ?
    Par gobgob dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 11h41
  4. Question sur les multimaps
    Par Chii-san dans le forum SL & STL
    Réponses: 4
    Dernier message: 08/11/2005, 09h08
  5. Ça sert à quoi ?
    Par sokadavia dans le forum Scheme
    Réponses: 4
    Dernier message: 18/05/2004, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo