Conteneur associatif non ordonné

Conteneur associatif non ordonné - C++ - Programmation

Marsh Posté le 02-08-2010 à 15:35:31    

Hello,
 
Je cherche dans la bibliothèque standard un conteneur associatif (paires de valeurs) qui n'ordonne pas comme map.
Ce que je veux c'est insérer mes paires dans un ordre, et que l'ordre reste inchangé lors du parcours du conteneur.
J'ai vu hash_map mais je ne vois pas la différence avec map...


---------------
Be the one with the flames.
Reply

Marsh Posté le 02-08-2010 à 15:35:31   

Reply

Marsh Posté le 02-08-2010 à 15:42:10    

Rien dans la norme (ni l'actuelle, dans celle en preparation).  Et j'ai pas le souvenir d'avoir vu qqch du genre dans boost.

 

La difference entre unordered_map et map, c'est que unordered_map n'ordonne pas et a des contraintes de complexite differentes (suggerant fortement qu'on veut une table de hachage et pas la variante d'arbre suggeree par les contraintes sur map).

 

Edit: hash_map vers unordered_map.  hash_map est une extension fournie par certaines implementation de la lib standard.  Comme ces extensions ont des interfaces differentes, le nom unordered_map a ete utilise pour la version standardisee pour eviter les conflits.

Message cité 1 fois
Message édité par Un Programmeur le 02-08-2010 à 15:50:59

---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 02-08-2010 à 15:51:45    

Un Programmeur a écrit :

c'est que hash_map n'ordonne pas


C'est étonnant car quand je fais :
 
hash_map< string, int > foo;
foo[ "min" ] = 10;
foo[ "max" ] = 200;
 
hash_map< string, int >::iterator it = foo.begin()
for( ; it != foo.end(); ++it )
  cout << it->first << endl;
 
Il m'affiche :
max
min


---------------
Be the one with the flames.
Reply

Marsh Posté le 02-08-2010 à 15:52:01    

Ah le fourbe ! :D


---------------
Be the one with the flames.
Reply

Marsh Posté le 02-08-2010 à 15:59:55    

Si tu veux conserver l'ordre d'insertion et avoir un lookup à la map/hash_map, tu as un truc dans boost:
 
http://www.boost.org/doc/libs/1_43 [...] asics.html
 

Reply

Marsh Posté le 02-08-2010 à 16:05:19    

Merci à vous :jap:


---------------
Be the one with the flames.
Reply

Marsh Posté le 02-08-2010 à 17:19:56    

Sinon rien ne t'empêche le faire à la mano un vector/list et un map/unordered_map, mais bon y'a des pièges auquel il faut penser :D

Reply

Marsh Posté le 03-08-2010 à 08:45:52    

C'est ce que j'ai fait au final, car la situation n'est pas aussi simple que ce que j'ai exposé dans mon 1er post.


---------------
Be the one with the flames.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed