Aller au menu - Aller au contenu

[C++] Les templates

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1 
Pseudo Commentaire
Page 1 
Hors ligne rotoclap-le-connard # Posté le 30/06/2008 à 19:16:26
Groupe : Bannis

Très bon tuto, mais tu aurais aussi put parler des classes avec les templaces (ou patrons).
19/20
Hors ligne foester # Posté le 30/06/2008 à 19:21:08
Beer is life !
Avatar

J'ai voulu en parler, mais il y a des notions plus compliquées que pour les fonctions.
Je pense donc que je vais écrire un tutoriel spécialement pour les templates, dans la continuité de celui-ci ;)

Merci pour ton commentaire et ta note :)
 
Hors ligne Layus # Posté le 30/06/2008 à 19:50:52
!? encore un Layus...
Avatar

Études : Université catholique de Louvain

Un bon tuto attendu depuis longtemps... on parle tellement des templates et personne n'avait encore pris la peine d'en parler (ou j'ai mal cherché ?)

Peut-être aurais-tu dû l'appeler "templates" qui est un nom plus répandu que "patrons" ou bien alors mettre les 2 dans le titre ?

Et une bonne note supplémentaire !

Celui qui reçoit une idée de moi reçoit un savoir sans diminuer le mien, tout comme celui qui allume sa bougie à la mienne reçoit la lumière sans me plonger dans la pénombre.
Thomas Jefferson
 
Hors ligne Sim the Boss # Posté le 30/06/2008 à 20:01:05

19 / 20
Je suis d'accord sur le fait qu'il aurait mieux fallu appeler ca templates que Patron. Pour ce qui me concerne j'ai lu ce tuto parce que je me demandais "Tiens qu'est ce que c'est les patrons ??" et non pas " Chouette un tuto sur les templates !"
Hors ligne landeguy # Posté le 30/06/2008 à 21:21:50
Ou pas!
Avatar

20/20,
Rien a dire ;) .

Je suis en tain de faire un Zelda ammateur, si vous etes interresse(e) pour y participer envoyez moi un MP (je vais bientot en faire un topic) ^^
 
Hors ligne fisherprice # Posté le 01/07/2008 à 00:23:34
Avatar

Perfect!! Depuis le temps que je cherchais un éclaircissement sur ce sujet ;)
Hors ligne Apobis # Posté le 01/07/2008 à 02:28:33

Études : Télécom Bretagne

Jtrouve ca un peu maigre. Est cquon peut spécifier, dans template<class Type>, certains types admis et pas d'autres ? ca ressemblerait à template<class Type(int, double, float)> . Ou sinon, est cquon peut créer une variable template, qui admettrait toutes sortes de données ? Et puis quand même, ne pas parler des templates dans les classes, c'est un gros oubli... bref jpose ces questions sans attendre vrmt de réponse pour moi, juste pcq je trouve que ca manque au tuto
Hors ligne raphamil # Posté le 01/07/2008 à 03:15:38
Avatar

Études : Université de Bordeaux

Très bon tuto. Il manque peut-être l'évocation des templates de classes ? 19/20

Les langages fonctionnels sont un rien spéciaux, mais ils changent votre manière de voir un programme. Si vous ne connaissez que des dérivés du C (PHP, Python, etc.), changez votre manière de voir ici, et avec OCaml, Haskell, ou Scheme.
 
Hors ligne Nanoc # Posté le 01/07/2008 à 10:12:27
Aimez-vous le C++ ?
Avatar
Validateurs

Ville : Durham
Pays : Royaume-Uni
Études : EPFL

Hello,

Je fais quelques remarques en vrac sur ton tutoriel :

a) Pour les modèles, on passe par référence constante et pas par valeur. Cela permet d'éviter la copie de gros objets en cas d'appel avec un gros objet.

b) Tu devrais spécifier que tout le code doit se trouver dans le .h ou alors qu'il faut un compilateur qui supporte le mot-clé "export".

c) Tu aurais pu parler des patrons dont l'argument template n'est pas un type.

d) typename n'est pas strictement égal à class. Il a une autre utilité.

Sinon, c'est bien résumé pour un début, mais il me semble que tu ne maîtrises pas pleinement le sujet.
 
Hors ligne wado # Posté le 01/07/2008 à 13:01:27

Très bon tuto.

Pourrais-tu approfondir la matière ?

20/20
Hors ligne altic # Posté le 01/07/2008 à 16:01:53

Pas mal mais il manque des choses (les classes modèles déjà, un petit paragraphe sur la métaprogrammation...).

Pour moi ton exemple de spécialisation n'en n'est pas un: cela me paraît plus être de la surcharge car la signature de la fonction n'est pas similaire à ce qu'aurait été une version spécialisée de ta fonction modèle.
Si c'est le cas ça serait pas mal de préciser la notion de spécialisation, parce que je trouve ça assez flou et je dois pas être le seul ^^ .
Hors ligne Chlab_lak # Posté le 01/07/2008 à 20:27:09
=]:-)--|--<
Avatar

Études : Ecole Supérieure de l'ETML

je rejoins l'avis de Nanoc et:
- Ta spécialisation est "spéciale" (pas de template<>)
- Tu as oublié de parler de la spécialisation partielle

Sinon bonne introduction.
 
Hors ligne lmghs # Posté le 01/07/2008 à 23:52:25

e- @ les gens qui commentent: Les spécialisations ne sont pas ce qu'il y a de plus important dans un premier temps. Et puis, Alp a déjà écrit de longues pages sur le sujet. Ne parlons même pas de la métaprog.


f- Le principe des ADT, mis en place en C++ en rendant les classes templates est je pense plus important. Et parfait pour un autre tuto. Inutile de faire des pavés interminables qui font tout du sol au plafond.


Le point b- que soulève Nanoc est je pense assez important vu que le tuto s'adresse aux débutants. Car c'est un énorme piège dans lequel tombe pratiquement tout le monde lors du premier contact avec les templates. Il est vite fait de donner un lien vers la FAQ de développez si tu ne veux pas rentrer dans les détails.


g- Sinon, j'aurais peut-être évité de parler des cas où les paramètres ne sont pas de même type. Le fait qu'il y ait une erreur est parfois une bénédiction qui nous force à expliciter ce que l'on veut manipuler au moment de l'appel.
Autrement, il faut partir dans des truc plus compliqués à base de traits pour déterminer le type qui va bien -- boost a des trucs à ce sujet je crois ; si ce n'est pas boost, c'est loki ou stlsoft [Tiens, ils en parlent dans le /C++ Template: The Complete Guide/].


h- le truc avec string à la fin, ce n'est pas une spécialisation, mais une surcharge. Dans le cas d'une spécialisation, la fonction aurait été calculerSomme<std::string>().

<EDIT>Et au sujet de la (vraie) spécialisation de _fonctions_ templates, je vous renvoie au point 66 du /Coding Standards/ de Sutter&Alexandrescu qui dit en substance: "non c'est mal".
</edit>


i- <culture>si vous voulez des maths et des templates, allez voir le cours d'algorithmique de Stepanov -> stepanovpapers point je ne sais plus trop quoi -> google</>



Bon début sinon. Cela reste simple et pas surchargé d'informations qui ne devraient pas intéresser les débutants.
 
Hors ligne Alp # Posté le 02/07/2008 à 00:17:13

@lmghs : effectivement j'ai déjà écrit de quoi s'occuper sur le sujet ;)

Maintenant, je vais décortiquer cet article que je trouve inutile et non avenu (même pour débutants).

Code : C++
1
calculerSomme(int a, int b);

est incorrect, ou au moins sans rapport avec ce qui vient après.(avant Ruser pour mieux compiler)

Comme dit plus haut, tu présentes la surcharge et non la spécialisation à la fin.

Ce tuto a été écrit par quelqu'un qui n'est pas sur de ce qu'il écrit, qui par conséquent écrit des bêtises, et qui n'a aucunement le recul nécessaire pour écrire un bon document pour débutants sur le sujet.

Je trouve honteux d'avoir publié ce tuto.

Tout ce que savent faire à la fin tes lecteurs, c'est paramétrer les types des arguments d'une fonction. On ne s'en sert pas que pour ça.

C'est vraiment sans intérêt et n'amènera pas bien loin.

J'avais commencé un document sur les templates à l'époque...

http://www.code-libre.org/cours/les-templates.html

C'est loin d'être parfait mais c'est déjà ça.

Non sérieux, je n'en reviens pas. J'aimerais réellement comprendre les motivations qui t'ont poussé à écrire ce cours. Retourne te documenter sur le sujet et reviens-nous pour écrire un tuto ensuite.

@Chab_lak > bon courage ... La spécialisation partielle de fonctions n'est pas autorisée. Il faut passer par des structures templates avec operateur () surchargé pour simuler ce comportement.

Sérieusement, ce tuto ne sert strictement à rien.
 
Hors ligne Alp # Posté le 02/07/2008 à 00:31:55

Sans bien sur parler du fait que l'auteur n'a probablement pas idée lui-même de ou peuvent mener les templates...
 
Hors ligne HeatBurns # Posté le 02/07/2008 à 15:17:05
00010010001101000101
Avatar

Excellent tutoriel. Beaucoup de zeros l'attendaient depuis un moment. On attend ainsi le bog tuto de Nanoc avec moins d'impatience ! :D
Je mets 20/20 pour l'effot consenti.

Image utilisateur



 
Hors ligne jojo jumper # Posté le 07/07/2008 à 15:04:36

Il est clair qu'il manque des choses et que tout n'est pas forcément au point mais ton tuto reste une bonne introduction pour les zéros qui ne connaissent que le nom "templates" et veulent avoir un léger aperçu de ce que c'est réelement et à quoi cela peut servir. Pourquoi ne pas faire un big tuto sur tout le fonctionnement des templates, de A à Z ? (si tu en es capable, évidemment).

En tout cas, bonne continuation :D

Notez, partagez vos avis sur les séries Tv : http://serieall.fr/
 
Hors ligne hao-asakura # Posté le 02/04/2009 à 16:59:49
"ma citation"
Avatar

Études : ENPEI Ruiba

super bien ton tuto...bonne continuation ;)
PS:merci :)

"tous se que tu crée est beau , tu es la création de dieu"
 
Hors ligne Alp # Posté le 16/05/2009 à 02:39:07

Tu ne voudrais pas mettre à jour ?
Au moins mettre des trucs _vrais_ et _utiles_ ?
 
Hors ligne Tai67 # Posté le 23/07/2009 à 15:07:24
Avatar

Ville : Strasbourg
Pays : France métropolitaine

Je trouve ce tuto vachement utile, merci de l'avoir écrit :) .

La femme des uns fait le bohneur des autres Pierre Desproges
 
Hors ligne BOUNS # Posté le 25/12/2009 à 22:58:09
Avatar

Études : Polytech'Nice-Sophia Antipolis

Je trouve que ya pas mieux que ce tuto pour comprendre le fonctionnement des template, merci beaucoup.
Hors ligne Zarkenciel # Posté le 02/05/2010 à 01:45:27
Avatar

Je ne connaissais pas les templates, je trouve ton tutoriel excellent pour une première approche.

Merci de l'avoir écrit !
Hors ligne yamissous # Posté le 14/09/2010 à 20:38:34
Avatar

Avis : Très bon

Ville : Nancy
Pays : France métropolitaine

Super intéressant!


Image utilisateur
Si tous les cons volaient, il ferait nuit.
 
Hors ligne David Reboullet # Posté le 28/04/2012 à 19:41:20

Tutoriel bien fait et interressant, mais manque malheureusement de contenu non-traité par le tutoriel c++

Tu pourrais parler aussi de la possibilité de faire des templates avec des valeurs et non des types et aussi de l'adaptabilité des templates en fonction des attributs et méthodes d'un objet
Pour accéder à cette section
Connectez-vous !
connexion_rpx