De quelle maniere vaut il mieux implementer l'addition dans une classe
Vector? En methode ou en fonction amie?
Vector operator + (const Vector&) const;
ou
friend Vector operator + (const Vector&,const Vector&);
Je vois souvent la premiere forme mais la deuxieme me semble plus proche
de la realite mathematique ;-)
De quelle maniere vaut il mieux implementer l'addition dans une classe Vector? En methode ou en fonction amie? Vector operator + (const Vector&) const; ou friend Vector operator + (const Vector&,const Vector&);
Je vois souvent la premiere forme mais la deuxieme me semble plus proche de la realite mathematique ;-)
Pour trancher, il faut voir de quels constructeurs dispose la classe Vector (pour en connaitre la sémantique). Par exemple, si il y a un constructeur Vector( int ), j'aurais tendance à préférer la seconde alors que si les seuls constructeurs sont Vector( int = 0, int = 0 ) et (ocasionnellement) Vector( const Vector& ), la première me semble très bien faire l'affaire...
Chris
Plotark wrote:
De quelle maniere vaut il mieux implementer l'addition dans une classe
Vector? En methode ou en fonction amie?
Vector operator + (const Vector&) const;
ou
friend Vector operator + (const Vector&,const Vector&);
Je vois souvent la premiere forme mais la deuxieme me semble plus
proche de la realite mathematique ;-)
Pour trancher, il faut voir de quels constructeurs dispose la classe Vector
(pour en connaitre la sémantique). Par exemple, si il y a un constructeur
Vector( int ), j'aurais tendance à préférer la seconde alors que si les
seuls constructeurs sont Vector( int = 0, int = 0 ) et (ocasionnellement)
Vector( const Vector& ), la première me semble très bien faire l'affaire...
De quelle maniere vaut il mieux implementer l'addition dans une classe Vector? En methode ou en fonction amie? Vector operator + (const Vector&) const; ou friend Vector operator + (const Vector&,const Vector&);
Je vois souvent la premiere forme mais la deuxieme me semble plus proche de la realite mathematique ;-)
Pour trancher, il faut voir de quels constructeurs dispose la classe Vector (pour en connaitre la sémantique). Par exemple, si il y a un constructeur Vector( int ), j'aurais tendance à préférer la seconde alors que si les seuls constructeurs sont Vector( int = 0, int = 0 ) et (ocasionnellement) Vector( const Vector& ), la première me semble très bien faire l'affaire...
Chris
Laurent Deniau
Plotark wrote:
Bonjour,
De quelle maniere vaut il mieux implementer l'addition dans une classe Vector? En methode ou en fonction amie? Vector operator + (const Vector&) const; ou friend Vector operator + (const Vector&,const Vector&);
Je vois souvent la premiere forme mais la deuxieme me semble plus proche de la realite mathematique ;-)
Sauf implementation plus technique, une facon classique et simple consiste a ecrire
-- [ Laurent Deniau -- Scientific Computing & Data Analysis ] [ CERN -- European Center for Nuclear Research ] [ - http://cern.ch/Laurent.Deniau ] [ -- One becomes old when dreams become regrets -- ]
Plotark wrote:
Bonjour,
De quelle maniere vaut il mieux implementer l'addition dans une classe
Vector? En methode ou en fonction amie?
Vector operator + (const Vector&) const;
ou
friend Vector operator + (const Vector&,const Vector&);
Je vois souvent la premiere forme mais la deuxieme me semble plus proche
de la realite mathematique ;-)
Sauf implementation plus technique, une facon classique et simple consiste a ecrire
--
[ Laurent Deniau -- Scientific Computing & Data Analysis ]
[ CERN -- European Center for Nuclear Research ]
[ Laurent.Deniau@cern.ch - http://cern.ch/Laurent.Deniau ]
[ -- One becomes old when dreams become regrets -- ]
De quelle maniere vaut il mieux implementer l'addition dans une classe Vector? En methode ou en fonction amie? Vector operator + (const Vector&) const; ou friend Vector operator + (const Vector&,const Vector&);
Je vois souvent la premiere forme mais la deuxieme me semble plus proche de la realite mathematique ;-)
Sauf implementation plus technique, une facon classique et simple consiste a ecrire
-- [ Laurent Deniau -- Scientific Computing & Data Analysis ] [ CERN -- European Center for Nuclear Research ] [ - http://cern.ch/Laurent.Deniau ] [ -- One becomes old when dreams become regrets -- ]
Philippe Guglielmetti
pourquoi se fatiguer quand il existe std::valarray<T> ? STL implémente les op.math. en méthodes, ce qui me semble à la fois plus "sur" que la fonction amie (si on définit une classe AngleDEuler dérivée de tes vecteurs, avec sa propre addition, laquelle sera appelée ?) , plus "propre" (l'addition est extrêmement amie avec tes vecteurs), voire plus efficace (le compilo pourra plus facilement mettre le code inline tout seul et optimiser le code si tu fais des vecteurs 3D par exemple). -- Philippe Guglielmetti - www.dynabits.com "Plotark" a écrit dans le message de news:bn0781$9qp$
Bonjour,
De quelle maniere vaut il mieux implementer l'addition dans une classe Vector? En methode ou en fonction amie? Vector operator + (const Vector&) const; ou friend Vector operator + (const Vector&,const Vector&);
Je vois souvent la premiere forme mais la deuxieme me semble plus proche de la realite mathematique ;-)
Merci par avance,
Plotark
pourquoi se fatiguer quand il existe std::valarray<T> ?
STL implémente les op.math. en méthodes, ce qui me semble à la fois plus
"sur" que la fonction amie (si on définit une classe AngleDEuler dérivée de
tes vecteurs, avec sa propre addition, laquelle sera appelée ?) , plus
"propre" (l'addition est extrêmement amie avec tes vecteurs), voire plus
efficace (le compilo pourra plus facilement mettre le code inline tout seul
et optimiser le code si tu fais des vecteurs 3D par exemple).
--
Philippe Guglielmetti - www.dynabits.com
"Plotark" <plotark.nospam@ifrance.fr> a écrit dans le message de
news:bn0781$9qp$1@netserv.univ-lille1.fr...
Bonjour,
De quelle maniere vaut il mieux implementer l'addition dans une classe
Vector? En methode ou en fonction amie?
Vector operator + (const Vector&) const;
ou
friend Vector operator + (const Vector&,const Vector&);
Je vois souvent la premiere forme mais la deuxieme me semble plus proche
de la realite mathematique ;-)
pourquoi se fatiguer quand il existe std::valarray<T> ? STL implémente les op.math. en méthodes, ce qui me semble à la fois plus "sur" que la fonction amie (si on définit une classe AngleDEuler dérivée de tes vecteurs, avec sa propre addition, laquelle sera appelée ?) , plus "propre" (l'addition est extrêmement amie avec tes vecteurs), voire plus efficace (le compilo pourra plus facilement mettre le code inline tout seul et optimiser le code si tu fais des vecteurs 3D par exemple). -- Philippe Guglielmetti - www.dynabits.com "Plotark" a écrit dans le message de news:bn0781$9qp$
Bonjour,
De quelle maniere vaut il mieux implementer l'addition dans une classe Vector? En methode ou en fonction amie? Vector operator + (const Vector&) const; ou friend Vector operator + (const Vector&,const Vector&);
Je vois souvent la premiere forme mais la deuxieme me semble plus proche de la realite mathematique ;-)
Merci par avance,
Plotark
Guillaume Gourdin
pourquoi se fatiguer quand il existe std::valarray<T> ?
Comment ça marche, les std::valarray<T> ?
pourquoi se fatiguer quand il existe std::valarray<T> ?
pourquoi se fatiguer quand il existe std::valarray<T> ?
Comment ça marche, les std::valarray<T> ?
Philippe Guglielmetti
euh... bizarre, j'étais sur que valarray était membre de la STL "standard", mais je la trouve pas sur le site SGI... pourtant elle existe dans http://www.stlport.org/ et sur VC6 et VC7... je te copie la doc de VC6 (en anglais, désolé...) The template class describes an object that controls a varying-length sequence of elements of type T. The sequence is stored as an array of T. It differs from template class vector in two important ways:
a.. It defines numerous arithmetic operations between corresponding elements of valarray<T> objects of the same type and length, such as x cos(y) + sin(z). b.. It defines a variety of interesting ways to subscript a valarray<T> object, by overloading operator[]. En gros c'est un vecteur spécialisé pour les valeurs numériques. -- Philippe Guglielmetti - www.dynabits.com
euh... bizarre, j'étais sur que valarray était membre de la STL "standard",
mais je la trouve pas sur le site SGI... pourtant elle existe dans
http://www.stlport.org/ et sur VC6 et VC7...
je te copie la doc de VC6 (en anglais, désolé...)
The template class describes an object that controls a varying-length
sequence of elements of type T. The sequence is stored as an array of T. It
differs from template class vector in two important ways:
a.. It defines numerous arithmetic operations between corresponding
elements of valarray<T> objects of the same type and length, such as x cos(y) + sin(z).
b.. It defines a variety of interesting ways to subscript a valarray<T>
object, by overloading operator[].
En gros c'est un vecteur spécialisé pour les valeurs numériques.
--
Philippe Guglielmetti - www.dynabits.com
euh... bizarre, j'étais sur que valarray était membre de la STL "standard", mais je la trouve pas sur le site SGI... pourtant elle existe dans http://www.stlport.org/ et sur VC6 et VC7... je te copie la doc de VC6 (en anglais, désolé...) The template class describes an object that controls a varying-length sequence of elements of type T. The sequence is stored as an array of T. It differs from template class vector in two important ways:
a.. It defines numerous arithmetic operations between corresponding elements of valarray<T> objects of the same type and length, such as x cos(y) + sin(z). b.. It defines a variety of interesting ways to subscript a valarray<T> object, by overloading operator[]. En gros c'est un vecteur spécialisé pour les valeurs numériques. -- Philippe Guglielmetti - www.dynabits.com
Michaël Monerau
Philippe Guglielmetti wrote:
pourquoi se fatiguer quand il existe std::valarray<T> ? STL implémente les op.math. en méthodes, ce qui me semble à la fois plus "sur" que la fonction amie (si on définit une classe AngleDEuler dérivée de tes vecteurs, avec sa propre addition, laquelle sera appelée ?) , plus "propre" (l'addition est extrêmement amie avec tes vecteurs), voire plus efficace (le compilo pourra plus facilement mettre le code inline tout seul et optimiser le code si tu fais des vecteurs 3D par exemple).
pourquoi se fatiguer quand il existe std::valarray<T> ?
STL implémente les op.math. en méthodes, ce qui me semble à la fois
plus "sur" que la fonction amie (si on définit une classe AngleDEuler
dérivée de tes vecteurs, avec sa propre addition, laquelle sera
appelée ?) , plus "propre" (l'addition est extrêmement amie avec tes
vecteurs), voire plus efficace (le compilo pourra plus facilement
mettre le code inline tout seul et optimiser le code si tu fais des
vecteurs 3D par exemple).
pourquoi se fatiguer quand il existe std::valarray<T> ? STL implémente les op.math. en méthodes, ce qui me semble à la fois plus "sur" que la fonction amie (si on définit une classe AngleDEuler dérivée de tes vecteurs, avec sa propre addition, laquelle sera appelée ?) , plus "propre" (l'addition est extrêmement amie avec tes vecteurs), voire plus efficace (le compilo pourra plus facilement mettre le code inline tout seul et optimiser le code si tu fais des vecteurs 3D par exemple).
"Philippe Guglielmetti" wrote in message news:<3f93cc1e$0$3656$...
euh... bizarre, j'étais sur que valarray était membre de la STL "standard", mais je la trouve pas sur le site SGI... pourtant elle existe dans http://www.stlport.org/ et sur VC6 et VC7...
Ne confond pas STL et bibliothèque standard. Grosso modo, la bibliothèque standard vient de trois sources : la STL (pour les collections, les itérateurs et les algorithmes), la norme de facto existante, originalement de USL (iostream, complex) et des innovations pûres et simples du comité (valarray, locale). Pour commencer, en tout cas -- par la suite, même la partie USL a été assez modifiée (et surtout templatisée).
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"Philippe Guglielmetti" <news@dynabits.com> wrote in message
news:<3f93cc1e$0$3656$5402220f@news.sunrise.ch>...
euh... bizarre, j'étais sur que valarray était membre de la STL
"standard", mais je la trouve pas sur le site SGI... pourtant elle
existe dans http://www.stlport.org/ et sur VC6 et VC7...
Ne confond pas STL et bibliothèque standard. Grosso modo, la
bibliothèque standard vient de trois sources : la STL (pour les
collections, les itérateurs et les algorithmes), la norme de facto
existante, originalement de USL (iostream, complex) et des innovations
pûres et simples du comité (valarray, locale). Pour commencer, en tout
cas -- par la suite, même la partie USL a été assez modifiée (et surtout
templatisée).
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"Philippe Guglielmetti" wrote in message news:<3f93cc1e$0$3656$...
euh... bizarre, j'étais sur que valarray était membre de la STL "standard", mais je la trouve pas sur le site SGI... pourtant elle existe dans http://www.stlport.org/ et sur VC6 et VC7...
Ne confond pas STL et bibliothèque standard. Grosso modo, la bibliothèque standard vient de trois sources : la STL (pour les collections, les itérateurs et les algorithmes), la norme de facto existante, originalement de USL (iostream, complex) et des innovations pûres et simples du comité (valarray, locale). Pour commencer, en tout cas -- par la suite, même la partie USL a été assez modifiée (et surtout templatisée).
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Gabriel Dos Reis
writes:
| existante, originalement de USL (iostream, complex) et des innovations | pûres et simples du comité (valarray, locale).
Valarray existait chez Roguewave comme float_array, double_array ou longdouble_array (orthographe à vérifier mais cette bibliothèque existait).
-- Gaby
kanze@gabi-soft.fr writes:
| existante, originalement de USL (iostream, complex) et des innovations
| pûres et simples du comité (valarray, locale).
Valarray existait chez Roguewave comme float_array, double_array ou
longdouble_array (orthographe à vérifier mais cette bibliothèque
existait).
| existante, originalement de USL (iostream, complex) et des innovations | pûres et simples du comité (valarray, locale).
Valarray existait chez Roguewave comme float_array, double_array ou longdouble_array (orthographe à vérifier mais cette bibliothèque existait).
-- Gaby
kanze
Gabriel Dos Reis wrote in message news:...
writes:
| existante, originalement de USL (iostream, complex) et des | innovations pûres et simples du comité (valarray, locale).
Valarray existait chez Roguewave comme float_array, double_array ou longdouble_array (orthographe à vérifier mais cette bibliothèque existait).
Je n'ai pas l'impression que les classes RogueWave s'y ressemblait tellement, et d'après mes souvenirs, elles n'en étaient pas l'inspiration. Mais j'avoue que je n'en suis pas très sûr -- c'est une partie de la norme qui ne m'a jamais particulièrement intéressée.
Je crois qu'il y avait aussi quelque chose de semblable de locale chez Roguewave aussi, non ?
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr> wrote in message
news:<flsmlnqb3x.fsf@sel.cmla.ens-cachan.fr>...
kanze@gabi-soft.fr writes:
| existante, originalement de USL (iostream, complex) et des
| innovations pûres et simples du comité (valarray, locale).
Valarray existait chez Roguewave comme float_array, double_array ou
longdouble_array (orthographe à vérifier mais cette bibliothèque
existait).
Je n'ai pas l'impression que les classes RogueWave s'y ressemblait
tellement, et d'après mes souvenirs, elles n'en étaient pas
l'inspiration. Mais j'avoue que je n'en suis pas très sûr -- c'est une
partie de la norme qui ne m'a jamais particulièrement intéressée.
Je crois qu'il y avait aussi quelque chose de semblable de locale chez
Roguewave aussi, non ?
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
| existante, originalement de USL (iostream, complex) et des | innovations pûres et simples du comité (valarray, locale).
Valarray existait chez Roguewave comme float_array, double_array ou longdouble_array (orthographe à vérifier mais cette bibliothèque existait).
Je n'ai pas l'impression que les classes RogueWave s'y ressemblait tellement, et d'après mes souvenirs, elles n'en étaient pas l'inspiration. Mais j'avoue que je n'en suis pas très sûr -- c'est une partie de la norme qui ne m'a jamais particulièrement intéressée.
Je crois qu'il y avait aussi quelque chose de semblable de locale chez Roguewave aussi, non ?
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16