STL map et plusieurs types de valeurs ? [Résolu]

Signaler
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016
-
Messages postés
14985
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
8 mars 2021
-
Bonjour à tous,

J'ai découvert récemment les STL C++ car je souhaite retrouver un outils permettant de retrouver la puissance et la flexibilité des tableaux de hashages qu'on trouve en perl. Est-ce possible ???

J'ai vu que la STL map correspond plus ou moins à cela, mais étant en C++, il est fortement typé, à tel point que l'ont peut apparemment ne définir qu'un couple de type pour les clé valeur, cad,
std::map<string,int>,std::map<string,string> ou map<string,foat>, bref, si je veux stocker des valeurs de types diverses et variés, je fais comment ??? std::map<string,void> ???

Y a-t-il d'autres moyens ?, autres que de se la faire soi même

Merci

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"

3 réponses

Messages postés
14985
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
8 mars 2021
94
Yop!
Le seul moyen est, comme je l'ai indiqué, de faire de l'héritage.
Sinon, si vraiment tu es obligé (mais vraiment, hein! parce que ce n'est pas propre du tout et c'est source de bug), tu fais une map avec des void*
Mais c'est déconseillé!!!! Le meiux, c'est de t'en passer et de faire autrement...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
14985
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
8 mars 2021
94
Hello,
Tu peux mettre ce que tu veux dans une map: <truc, machin>, <voiture, cheval>,... Pas obligatoirement des string.
Par contre, une fois ta map défini, tu dois respecter les styles. Genre, si tu fais une map <voiture, cheval>, tu ne pourras pas ajouter un chien par exemple... Sauf si cheval et chien hérite d'un même objet "animal" et donc ta map devient <voiture, animal *>

Houlà....je ne sais pas si j'ai été clair, là...
Dis-moi

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016

Si si,

justement très clair, c'est justement le
Par contre, une fois ta map défini, tu dois respecter les styles

qui me dérange

Les tableaux de hashage Perl sont une merveille, tellement qu'ils servent à gérer les classe en perl.
Le this est un tableau de hashage pouvant contenir toutes les variables de ton instance sans se soucier du type.

Une cellule d'un tableau de hashage peut contenir une chaîne de caractère, un nombre, mais aussi et surtout, un autre tableau de hashage, ce qui permet de te faire quasiment une petite base de donnée dans ton programme avec une facilité qui me manque dans tous les autres langages que j'ai pu essayer.

Genre tu peux faire :

my %hash; //déclaration d'un tabeau de hash
my %hash2=("Avis"=>"Code-Sources, C'est génial !!"); // déclaration et initialisation d'un autre tableau

hash{"C"}{"ti"}="Pas Merveilleux ??"



hash{"liste de langage"}{"nombre"}=6
hash{"liste de langage"}{"essayés"}=("ASM","C","C++","C#","php","Perl","Tcl");
hash{"liste de langage"}{"pas encore essayés"}=("Java","Python","...");
hash{"Conclusion"}=hash2;

print hash{"Conlcusion"}{"Avis"};



donne :

>Code-Sources, C'est génial !!

Bon après, j'ai bien conscience que Perl n'est pas fortement typé voir pas du tout, ce qui explique...

Mais, y aurait-il un moyen de retrouver ça ???

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"