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

C++ Discussion :

Le point sur unordered_map


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    60
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 60
    Par d�faut Le point sur unordered_map
    Salut Amis d�veloppeurs
    J'ai d�couvert il y a pas longtemps l'existence du conteneur std::unordered_map avec msvc 2010.
    D'apr�s ce que j'ai lu ce conteneur est plus efficace que la std::map pour tout ce qui est find, insert, erase.....Mais par contre il faut fournir une fonction de hachage qui tient la route..Aussi il y en a qui sont fournies par d�faut....
    Moi je veux faire �a : std::unordered_map<std::pair<int,int>, float>.....
    Donc la question est : est-ce que j'ai une fonction de hachage appropri�e pour
    les std::pair...ou faut-il la fournir....En gros quel condition doit-remplir un type pour �tre cl� d'une unordered_map....
    N.B : Je suis en plein dans un projet donc j'ai pas trop le temps de chercher en profondeur...Merci de me filer un coup de main .

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    60
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 60
    Par d�faut
    Je me repond moi-meme car j'ai trouv�.....
    Pour ceux qui ont le meme probleme sachez que boost fournit dans son header
    boost/functional/hash/extensions.hpp des fonctions de hach pour std::pair<> et tous les conteneurs.

    Attendez...c'est pas encore fini...J'ai un autre petit probl�me
    Je veux modifier une cl� dans mon unordered_map par it�rateur mais apparemment c'est prot�g� car quand j'essaie-->erreur de compilation...

    Je ne maitrise pas encore ce conteneur mais je sais que avec map il peut y avoir des soucis car c'est ordonn� en permanence...mais l� il n'y a pas d'ordre...

    Alors Est-ce que quelqu'un sait comme proc�der pour modifier les valeurs des cl�s tout en gardant la meme position...???
    Merci

  3. #3
    Invit�
    Invit�(e)
    Par d�faut
    Le nom est trompeur... Les unordered_map sont aussi ordonn�es, mais pas selon des crit�res que tu definis toi-m�me. Logiquement tu ne peux pas modifier la cl�.

  4. #4
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Salut,
    ordonn�e ou pas, une map est une association entre une cl� et une valeur. Modifier la cl� revient � supprimer une ancienne association pour en cr�er une nouvelle.
    L'id�e sous jascente des map (ordered) est d'utiliser la relation d'ordre strict pour construire un arbre binaire des �l�ments et permettre leur recherche en log(n). L'inconv�nient est que l'insertion ou la suppression d'un �l�ment est couteuse car cela demande de retravailler sur l'arbre.
    L'id�e des unordered map est d'utiliser une fonction de hachage pour segmenter l'ensemble des cl�s en diff�rents sous-ensembles plus r�duits (un peu comme les CMap des MFC), l'association dans le sous-ensemble �tant g�r�e plus 'basiquement' (les MFC font une liste cha�n�e si je me souvient bien). Le principe est d'avoir une fonction de hachage qui minimise les collisions, �ad qui minimise le nombre de cl�s qui ont le m�me hash. L'insertion et la suppression peuvent �tre alors plus rapide (comme dans une liste cha�n�e par expl) mais la recherche est un peu moins performante.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    60
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 60
    Par d�faut
    L'insertion et la suppression peuvent �tre alors plus rapide (comme dans une liste cha�n�e par expl) mais la recherche est un peu moins performante.
    Qu'entends-tu par moins performante ??? car selon ce que j'ai lu les unordered_map sont plus rapides que les map que ce soit pour l'insertion, la suppression mais aussi pour la recherche....

  6. #6
    Membre �prouv�
    Avatar de ymoreau
    Homme Profil pro
    Ing�nieur �tude et d�veloppement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur �tude et d�veloppement
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par d�faut
    Salut, voici les infos sur les conteneurs de Qt : http://qt.developpez.com/doc/latest/...mic-complexity

    A savoir que QHash correspond au std::unordered_map et QMap au std::map. M�me s'il ne s'agit pas exactement de la m�me impl�mentation, les algos sont les m�mes derri�re, donc la complexit� aussi. Pour r�sumer l'unordored_map sera plus rapide en moyenne pour n'importe quelle action (insertion, suppression, recherche), par contre le pire (lorsque la fonction de hachage cr�e beaucoup de collisions) est plus important qu'avec une map (en arbre).

  7. #7
    screetch
    Invit�(e)
    Par d�faut
    il faut savoir que les unordered_map ont un gros defaut: lorsqu'on depasse une certqine taille (qui double a chaque fois) l'ensemble va etre reallou�, toute les cl�s de hachage vont etre recalcul�es (ca depend de l'implementation bien sur mais la derniere fois que j'avais essay� sur crosof c'etait comme ca) et donc la performance a l'insertion chute

Discussions similaires

  1. R�ponses: 4
    Dernier message: 28/02/2005, 18h04
  2. identifier un point sur l'ecran
    Par alionel dans le forum MFC
    R�ponses: 2
    Dernier message: 25/02/2005, 16h12
  3. calcul d'un point sur la base d'un cone
    Par Admin dans le forum Algorithmes et structures de donn�es
    R�ponses: 4
    Dernier message: 18/11/2003, 21h18

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