Suis-je dans l'erreur en considérant que I est implicitement déclaré comme A::const_iterator I et qu'il équivaut à un vector<B>::const_iterator ?
Vive « auto » !
-- LL Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Dominique MICOLLET
Bonjour,
Lucas Levrel wrote:
Vive « auto » !
Argh.... Moi qui enseigne à mes étudiants qu'il ne faut jamais laisser la machine décider à votre place, je ne peux m'autoriser à user de ce mot-clef dont j'ignorais jusqu'à l'existence. Pourquoi ne pas utiliser Windows tant qu'à faire. :-)
Plus sérieusement, merci pour cette suggestion. Mais je cherche surtout à comprendre ce que j'écris. Je suis phase d'apprentissage du C++.
Cordialement
Dominique.
Bonjour,
Lucas Levrel wrote:
Vive « auto » !
Argh.... Moi qui enseigne à mes étudiants qu'il ne faut jamais laisser la
machine décider à votre place, je ne peux m'autoriser à user de ce mot-clef
dont j'ignorais jusqu'à l'existence. Pourquoi ne pas utiliser Windows tant
qu'à faire. :-)
Plus sérieusement, merci pour cette suggestion. Mais je cherche surtout à
comprendre ce que j'écris. Je suis phase d'apprentissage du C++.
Argh.... Moi qui enseigne à mes étudiants qu'il ne faut jamais laisser la machine décider à votre place, je ne peux m'autoriser à user de ce mot-clef dont j'ignorais jusqu'à l'existence. Pourquoi ne pas utiliser Windows tant qu'à faire. :-)
Plus sérieusement, merci pour cette suggestion. Mais je cherche surtout à comprendre ce que j'écris. Je suis phase d'apprentissage du C++.
Cordialement
Dominique.
espie
In article <54f80015$0$3192$, Dominique MICOLLET wrote:
La machine ne decide rien a ta place, hein. C'est bien toi qui a ecrit la valeur d'initialisation. Elle se coltine juste un calcul (de type) a ta place. C'est son boulot, non ?
Perso, je considere qu'il faut mettre auto presque partout ou c'est possible. Deja parce que std::vector<int>::const_iterator, c'est de nature a faire fuir le debutant (et le moins debutant), mais surtout parce que ca evite de faire des coercions de valeur sans faire expres.
Genre, je prefere infiniment
auto d = 5.2; a float d = 5.2;
In article <54f80015$0$3192$426a74cc@news.free.fr>,
Dominique MICOLLET <anonymous@invalid.fr> wrote:
La machine ne decide rien a ta place, hein. C'est bien toi qui a ecrit
la valeur d'initialisation. Elle se coltine juste un calcul (de type) a
ta place. C'est son boulot, non ?
Perso, je considere qu'il faut mettre auto presque partout ou c'est
possible. Deja parce que std::vector<int>::const_iterator, c'est de
nature a faire fuir le debutant (et le moins debutant), mais surtout
parce que ca evite de faire des coercions de valeur sans faire expres.
La machine ne decide rien a ta place, hein. C'est bien toi qui a ecrit la valeur d'initialisation. Elle se coltine juste un calcul (de type) a ta place. C'est son boulot, non ?
Perso, je considere qu'il faut mettre auto presque partout ou c'est possible. Deja parce que std::vector<int>::const_iterator, c'est de nature a faire fuir le debutant (et le moins debutant), mais surtout parce que ca evite de faire des coercions de valeur sans faire expres.
Genre, je prefere infiniment
auto d = 5.2; a float d = 5.2;
Dominique MICOLLET
Bonjour,
Marc Espie wrote:
Genre, je prefere infiniment
auto d = 5.2; a float d = 5.2;
Certes. Mais si je veux un double ? ou un long double ? ou un long long double ? Je débute en C++, mais j'ai une longue expérience tant en production qu'en pédagogie des loufoqueries induites par les "valeurs par défaut" en informatique.
Je considère que se poser la question "quel est le type de cette variable" est un moyen d'éviter des pièges.
Mais on est là dans le débat d'opinion et je conçois que d'autres aient une perception et une expérience différentes.
Cordialement
Dominique
Bonjour,
Marc Espie wrote:
Genre, je prefere infiniment
auto d = 5.2;
a
float d = 5.2;
Certes. Mais si je veux un double ? ou un long double ? ou un long long
double ?
Je débute en C++, mais j'ai une longue expérience tant en production qu'en
pédagogie des loufoqueries induites par les "valeurs par défaut" en
informatique.
Je considère que se poser la question "quel est le type de cette variable"
est un moyen d'éviter des pièges.
Mais on est là dans le débat d'opinion et je conçois que d'autres aient une
perception et une expérience différentes.
Certes. Mais si je veux un double ? ou un long double ? ou un long long double ? Je débute en C++, mais j'ai une longue expérience tant en production qu'en pédagogie des loufoqueries induites par les "valeurs par défaut" en informatique.
Je considère que se poser la question "quel est le type de cette variable" est un moyen d'éviter des pièges.
Mais on est là dans le débat d'opinion et je conçois que d'autres aient une perception et une expérience différentes.
Cordialement
Dominique
Lucas Levrel
Le 5 mars 2015, Dominique MICOLLET a écrit :
Lucas Levrel wrote:
Vive « auto » !
Argh.... Moi qui enseigne à mes étudiants qu'il ne faut jamais laisser la machine décider à votre place, je ne peux m'autoriser à user de ce mot-clef dont j'ignorais jusqu'à l'existence.
C'est du C++11.
Plus sérieusement, merci pour cette suggestion. Mais je cherche surtout à comprendre ce que j'écris. Je suis phase d'apprentissage du C++.
Je l'utilise uniquement pour des itérateurs ou des trucs similaires (valeur de retour d'une fonction membre d'une classe de la STL), parce que je trouve leur type très indigeste, et faire un typedef juste pour un itérateur...
Dans ce cas précis je trouve que ça clarifie le code et ne risque pas d'introduire des erreurs.
Note que je ne suis pas informaticien. J'utilise le C++ un peu comme du « C with classes », et j'apprends sur le tas (donc sans doute un peu de travers). Du coup j'ai un point de vue plutôt pragmatique !
Un site que je trouve très utile, notamment pour sa « Standard C++ Library reference » : www.cplusplus.com
-- LL Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Le 5 mars 2015, Dominique MICOLLET a écrit :
Lucas Levrel wrote:
Vive « auto » !
Argh.... Moi qui enseigne à mes étudiants qu'il ne faut jamais laisser la
machine décider à votre place, je ne peux m'autoriser à user de ce mot-clef
dont j'ignorais jusqu'à l'existence.
C'est du C++11.
Plus sérieusement, merci pour cette suggestion. Mais je cherche surtout à
comprendre ce que j'écris. Je suis phase d'apprentissage du C++.
Je l'utilise uniquement pour des itérateurs ou des trucs similaires
(valeur de retour d'une fonction membre d'une classe de la STL), parce que
je trouve leur type très indigeste, et faire un typedef juste pour un
itérateur...
Dans ce cas précis je trouve que ça clarifie le code et ne risque pas
d'introduire des erreurs.
Note que je ne suis pas informaticien. J'utilise le C++ un peu comme du «
C with classes », et j'apprends sur le tas (donc sans doute un peu de
travers). Du coup j'ai un point de vue plutôt pragmatique !
Un site que je trouve très utile, notamment pour sa « Standard C++ Library
reference » : www.cplusplus.com
Argh.... Moi qui enseigne à mes étudiants qu'il ne faut jamais laisser la machine décider à votre place, je ne peux m'autoriser à user de ce mot-clef dont j'ignorais jusqu'à l'existence.
C'est du C++11.
Plus sérieusement, merci pour cette suggestion. Mais je cherche surtout à comprendre ce que j'écris. Je suis phase d'apprentissage du C++.
Je l'utilise uniquement pour des itérateurs ou des trucs similaires (valeur de retour d'une fonction membre d'une classe de la STL), parce que je trouve leur type très indigeste, et faire un typedef juste pour un itérateur...
Dans ce cas précis je trouve que ça clarifie le code et ne risque pas d'introduire des erreurs.
Note que je ne suis pas informaticien. J'utilise le C++ un peu comme du « C with classes », et j'apprends sur le tas (donc sans doute un peu de travers). Du coup j'ai un point de vue plutôt pragmatique !
Un site que je trouve très utile, notamment pour sa « Standard C++ Library reference » : www.cplusplus.com
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index. html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index. html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Note que je ne suis pas informaticien. J'utilise le C++ un peu comme du « C with classes », et j'apprends sur le tas (donc sans doute un peu de travers). Du coup j'ai un point de vue plutôt pragmatique !
Yo Brother :-)
Je suis dans la même situation. Toutefois je percois de plus en plus que je passe à coté de fonctionnalités puissantes du C++ et qu'il faut que je comprenne mieux comment tout cela s'articule. Quelque part, je n'apprécie pas que ce soit la machine qui me domine :-).
Un site que je trouve très utile, notamment pour sa « Standard C++ Library reference » : www.cplusplus.com
Note que je ne suis pas informaticien. J'utilise le C++ un peu comme du «
C with classes », et j'apprends sur le tas (donc sans doute un peu de
travers). Du coup j'ai un point de vue plutôt pragmatique !
Yo Brother :-)
Je suis dans la même situation. Toutefois je percois de plus en plus que je
passe à coté de fonctionnalités puissantes du C++ et qu'il faut que je
comprenne mieux comment tout cela s'articule. Quelque part, je n'apprécie
pas que ce soit la machine qui me domine :-).
Un site que je trouve très utile, notamment pour sa « Standard C++ Library
reference » : www.cplusplus.com
Je m'en sert effectivement très souvent.
Par ailleurs, je "potasse" en ce moment :
http://www.icce.rug.nl/documents/cplusplus/
C'est un cours dont le début est très prometteur.
Note que je ne suis pas informaticien. J'utilise le C++ un peu comme du « C with classes », et j'apprends sur le tas (donc sans doute un peu de travers). Du coup j'ai un point de vue plutôt pragmatique !
Yo Brother :-)
Je suis dans la même situation. Toutefois je percois de plus en plus que je passe à coté de fonctionnalités puissantes du C++ et qu'il faut que je comprenne mieux comment tout cela s'articule. Quelque part, je n'apprécie pas que ce soit la machine qui me domine :-).
Un site que je trouve très utile, notamment pour sa « Standard C++ Library reference » : www.cplusplus.com
Entre auto et hériter publiquement d'une classe comme vector<> qui n'a pas été conçue pour, je sais ce que je préfèrerais qu'on enseigne à ceux qui voudraient devenir mes collègues. ;-)
Rassurez-vous, je n'enseigne pas le C++ :-).
Plus sérieusement, pourriez-vous développer votre réticence quant à l'héritage public de vector ?
Craindre auto me fait penser aux programmeurs C qui craignent les paramètres références non constantes.
Je n'ai pas compris.
Cordialement
Dominique.
Bonjour,
Jean-Marc Bourguet wrote:
Entre auto et hériter publiquement d'une classe comme vector<> qui n'a
pas été conçue pour, je sais ce que je préfèrerais qu'on enseigne à ceux
qui voudraient devenir mes collègues. ;-)
Rassurez-vous, je n'enseigne pas le C++ :-).
Plus sérieusement, pourriez-vous développer votre réticence quant à
l'héritage public de vector ?
Craindre auto me fait penser aux programmeurs C qui craignent les
paramètres références non constantes.
Entre auto et hériter publiquement d'une classe comme vector<> qui n'a pas été conçue pour, je sais ce que je préfèrerais qu'on enseigne à ceux qui voudraient devenir mes collègues. ;-)
Rassurez-vous, je n'enseigne pas le C++ :-).
Plus sérieusement, pourriez-vous développer votre réticence quant à l'héritage public de vector ?
Craindre auto me fait penser aux programmeurs C qui craignent les paramètres références non constantes.
Je n'ai pas compris.
Cordialement
Dominique.
Dominique MICOLLET
Bonjour,
Jean-Marc Bourguet wrote:
Plus précisément I est explicitement déclaré comme étant du type const_iterator trouvé par une recherche dans le contexte courant. On va chercher dans A::C(), il n'y a probablement rien, on va chercher dans A, il n'y a probablement rien, on va chercher dans vector<B>, il y a probablement quelque chose.
C'est bien comme cela que je le préssentais.
Considérer qu'il y a un const_iterator déclaré implicitement déclaré dans A fonctionne assez bien, mais décrit aussi peu la réalité que de considérer qu'il y en a un implicitement déclaré dans A::C. Ça fonctionne jusqu'au moment où on se trouve dans un cas où la recherche s'arrête plus tôt (dans les templates par exemple), et celui qui a ce modèle dans la tête ne comprend plus ce qui se passe.
Je ne comprends pas votre remarque.
Le type const_iterator n'est pas défini dans A::C : le compilateur est bien obligé de remonter la hierarchie jusqu'à en trouver un, et il me semble que la norme en propose un dans "vector". J'ignore bien sûr s'il est dans "vector" ou encore plus loin dans la hiérarchie, mais il me semble que ce n'est pas important, puisque je veux un itérateur capable de parcourir le "vector".
Cordialement
Dominique
Bonjour,
Jean-Marc Bourguet wrote:
Plus précisément I est explicitement déclaré comme étant du type
const_iterator trouvé
par une recherche dans le contexte courant. On va chercher dans A::C(),
il n'y a probablement rien, on va chercher dans A, il n'y a probablement
rien, on va chercher dans vector<B>, il y a probablement quelque chose.
C'est bien comme cela que je le préssentais.
Considérer qu'il y a un const_iterator déclaré implicitement déclaré
dans A fonctionne assez bien, mais décrit aussi peu la réalité
que de considérer qu'il y en a un implicitement déclaré dans A::C. Ça
fonctionne jusqu'au moment où on se trouve dans un cas où la recherche
s'arrête plus tôt (dans les templates par exemple), et celui qui a ce
modèle dans la tête ne comprend plus ce qui se passe.
Je ne comprends pas votre remarque.
Le type const_iterator n'est pas défini dans A::C : le compilateur est bien
obligé de remonter la hierarchie jusqu'à en trouver un, et il me semble que
la norme en propose un dans "vector". J'ignore bien sûr s'il est dans
"vector" ou encore plus loin dans la hiérarchie, mais il me semble que ce
n'est pas important, puisque je veux un itérateur capable de parcourir le
"vector".
Plus précisément I est explicitement déclaré comme étant du type const_iterator trouvé par une recherche dans le contexte courant. On va chercher dans A::C(), il n'y a probablement rien, on va chercher dans A, il n'y a probablement rien, on va chercher dans vector<B>, il y a probablement quelque chose.
C'est bien comme cela que je le préssentais.
Considérer qu'il y a un const_iterator déclaré implicitement déclaré dans A fonctionne assez bien, mais décrit aussi peu la réalité que de considérer qu'il y en a un implicitement déclaré dans A::C. Ça fonctionne jusqu'au moment où on se trouve dans un cas où la recherche s'arrête plus tôt (dans les templates par exemple), et celui qui a ce modèle dans la tête ne comprend plus ce qui se passe.
Je ne comprends pas votre remarque.
Le type const_iterator n'est pas défini dans A::C : le compilateur est bien obligé de remonter la hierarchie jusqu'à en trouver un, et il me semble que la norme en propose un dans "vector". J'ignore bien sûr s'il est dans "vector" ou encore plus loin dans la hiérarchie, mais il me semble que ce n'est pas important, puisque je veux un itérateur capable de parcourir le "vector".