[VC++] Liste

Liste [VC++] - C - Programmation

Marsh Posté le 02-02-2006 à 16:43:41    

Bonjour,
 
Est-il possible de faire des liste en C ou C++ du genre :
 
tab["toto"] = 1
tab["titi"] = 3
 
ou
 
tab["toto"]= "jaune"
tab["titi"]="rouge"
 
Avez vous une idee la dessus ?
 
Peut etre qu'avec CString cela est possible?
 
Merci de votre aide.

Reply

Marsh Posté le 02-02-2006 à 16:43:41   

Reply

Marsh Posté le 02-02-2006 à 16:44:43    

en C++, avec hash_map, oui

Reply

Marsh Posté le 02-02-2006 à 17:21:39    

badre2911 a écrit :

Est-il possible de faire des liste en C ou C++ du genre :
tab["toto"] = 1
tab["titi"] = 3


[C] Non.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 02-02-2006 à 18:50:01    

Merci, mais il n'y a pas plus simple que les hash_map ??

Reply

Marsh Posté le 02-02-2006 à 19:01:02    

badre2911 a écrit :

Merci, mais il n'y a pas plus simple que les hash_map ??


Tables de chaines triées, recherche dichotomique...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 02-02-2006 à 19:18:03    

punaise hash_map c'est pas le drame o_O
on vous pas appris à lire les docs ?

Reply

Marsh Posté le 02-02-2006 à 20:39:51    

Joel F a écrit :

punaise hash_map c'est pas le drame o_O
on vous pas appris à lire les docs ?


 
une doc sur hash_map ? laquelle ? Y a autant de hash_map que de compilateurs :/  __gnu_cxx::hash_map<>, ..., et même std::hash_map<> de m$  :sweat:  
lire une doc sur std::tr1::unordered_map<> a davantage de sens à mon avis, mais c'est peut-etre ce que tu voulais dire.
 
Sinon, dans le cas ou il n'y a pas des milliers d'éléments, std::map<> doit pouvoir faire l'affaire.

Reply

Marsh Posté le 02-02-2006 à 20:47:43    

stdext chez m1cr0sh1tzor lol depuis teh mighty multichity vs 2003, lol
(lol)
 
m'enfin utiliser hash_map quand on se fout de la portabilité, c'est quand meme pas de la haute volée (enfin c'est plus simple sous VisualShitio que sous llovefaismoilamourtoutnumonbognugcc)

Reply

Marsh Posté le 02-02-2006 à 21:08:46    

chrisbk a écrit :

stdext chez m1cr0sh1tzor lol depuis teh mighty multichity vs 2003, lol
(lol)


t'es sur ? gdr disait que std::hash_map n'avait été décidé d'etre retiré par m$ que très récemment.
 

chrisbk a écrit :

m'enfin utiliser hash_map quand on se fout de la portabilité, c'est quand meme pas de la haute volée (enfin c'est plus simple sous VisualShitio que sous llovefaismoilamourtoutnumonbognugcc)


 
 Yeah [:nico95]

Reply

Marsh Posté le 03-02-2006 à 08:07:00    

++fab a écrit :

une doc sur hash_map ? laquelle ? Y a autant de hash_map que de compilateurs :/  


 
c'est pas ça le problème  :sleep:

Reply

Marsh Posté le 03-02-2006 à 08:07:00   

Reply

Marsh Posté le 03-02-2006 à 08:15:43    

++fab a écrit :

t'es sur ? gdr disait que std::hash_map n'avait été décidé d'etre retiré par m$ que très récemment.
 
 
 
 Yeah [:nico95]


 
sur sur, depuis VS2003 pour cause de conformité au stdart, ca a été retiré de std et placé dans stdext

Reply

Marsh Posté le 03-02-2006 à 10:18:10    

++fab a écrit :

une doc sur hash_map ? laquelle ? Y a autant de hash_map que de compilateurs :/  __gnu_cxx::hash_map<>, ..., et même std::hash_map<> de m$  :sweat:  
lire une doc sur std::tr1::unordered_map<> a davantage de sens à mon avis, mais c'est peut-etre ce que tu voulais dire.
 
Sinon, dans le cas ou il n'y a pas des milliers d'éléments, std::map<> doit pouvoir faire l'affaire.


à noté que std::tr1::unordered_map<> est livré avec gcc4. Mais je suis d'accord avec toi, une std::map<> ça fonctionnera très bien. Y a qu'à utiliser.

Reply

Marsh Posté le 03-02-2006 à 12:48:44    

chrisbk a écrit :

sur sur, depuis VS2003 pour cause de conformité au stdart, ca a été retiré de std et placé dans stdext


 
vas-y, chausse les vissées !  :D  
 
http://groups.google.fr/group/fr.c [...] 8659c3a171

Reply

Marsh Posté le 03-02-2006 à 13:49:36    


 
heuh ???

Reply

Marsh Posté le 03-02-2006 à 13:51:08    

Reply

Marsh Posté le 03-02-2006 à 13:53:02    

J'ai regarde sur google hash_map mais je ne trouve pas d'exemple comment declarer le tableau.
 
par exemple:
 
tab["toto"] = 3
 
comment l'utilise t-ont ?
 
Merci de votre aide.

Reply

Marsh Posté le 03-02-2006 à 13:53:47    

hash_map<std::string, int> toto;
 
 
(sous gcc t'auras des emmerdes, cela dit)
 

Reply

Marsh Posté le 03-02-2006 à 13:59:04    


ça me parait clair que hash_map<> traine encore dans std:: par compatibilité.

Reply

Marsh Posté le 03-02-2006 à 14:00:28    

chrisbk a écrit :

hash_map<std::string, int> toto;
 
 
(sous gcc t'auras des emmerdes, cela dit)


 d'ou l'utilisation de std::map<> qui est bien plus raisonnable AMHA.

Reply

Marsh Posté le 03-02-2006 à 14:01:49    

++fab a écrit :

ça me parait clair que hash_map<> traine encore dans std:: par compatibilité.


 
il est tjs dans std:: mais si tu l'utilise tu te manges des warnings par pleine poignées "machintruc is deprecated", bref a partir de vs2003 c'est plus utilisable (sauf en desactivant le warning), fo passer par stdext. Meme chose pour les <iostream.h> & cie. A voir si c'est tjs present dans VS2005 ou c'est parti pour de bon
 

Reply

Marsh Posté le 03-02-2006 à 14:02:31    

++fab a écrit :

d'ou l'utilisation de std::map<> qui est bien plus raisonnable AMHA.


 
ué. Sinon le pb sous gcc c'est qu'il ne defini pas par defaut de fonction de hachage pour std::string (enfin, si, mais non)

Reply

Marsh Posté le 03-02-2006 à 14:11:27    

SI j'ai bien compris mieux vaut utiliser std::map<std::string,int> sur VC++ ?
 
il faut inserer l'include <map> je suppose ?  
 
donc l'equivalent de  
tab["toto"]=5
tab["titi"] = 6
 
correspond à
 
std::map<std::string,5> toto
std::map<std::string,6> titi
 
si je veux recuperer la valeur de toto je suppose que je dois faire
int a;
 
std::map<std::string, a> toto ??
 
C'est bien ca ?
 
Merci.

Message cité 1 fois
Message édité par badre2911 le 03-02-2006 à 14:13:41
Reply

Marsh Posté le 03-02-2006 à 14:12:33    

[:pingouino] pas du tout
 
faut lire de la doc sur :
 
-le c++ (declaration de variable)
-les templates (instanciation)
-hash_map
 
y'en a plein le net
 
enfin cela dit

Citation :


 
SI j'ai bien compris mieux vaut utiliser std::map<std::string,int> sur VC++ ?
 
il faut inserer l'include <map> je suppose ?  


 
ca, c'est bon


Message édité par chrisbk le 03-02-2006 à 14:13:32
Reply

Marsh Posté le 03-02-2006 à 14:33:55    

J'ai jamais utilise les templates, mais je vais regarder sur google sur le C++.
 
Merci.

Reply

Marsh Posté le 03-02-2006 à 16:15:54    

badre2911 a écrit :

SI j'ai bien compris mieux vaut utiliser std::map<std::string,int> sur VC++ ?
 
il faut inserer l'include <map> je suppose ?  
 
donc l'equivalent de  
tab["toto"]=5
tab["titi"] = 6
 
correspond à
 
std::map<std::string,5> toto
std::map<std::string,6> titi

non

badre2911 a écrit :


si je veux recuperer la valeur de toto je suppose que je dois faire
int a;
 
std::map<std::string, a> toto ??
 
C'est bien ca ?
 
Merci.

non
 
std::map<std::string, int> toto;
toto["foo"] = 6;
std::cout << toto["foo"];

Reply

Marsh Posté le 03-02-2006 à 16:50:16    

on peut faire ça ???
 
Je croyais qu'on utilisait un curseur et qu'on faisait un peu comme ça :
 

Code :
  1. map<string, int> map;
  2. map<string, int>::iterator c_map;
  3.     c_map = map.begin();
  4.     c_map->first = "toto";
  5.     c_map->second = 6;


Message édité par MEI le 03-02-2006 à 17:32:22

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 03-02-2006 à 17:30:17    

heuh la ton iterateur y pointe sur que dalle

Reply

Marsh Posté le 03-02-2006 à 17:31:42    

ouai enfin c'etait pour montrer l'esprit quoi :)
 


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 03-02-2006 à 19:02:03    

Merci pour votre aide. Je vais tester.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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