J'ai regarde par rapport a la doc quand c'est le dernier onfait un push_back non ?
Non. Quand c'était le dernier, après il n'y en a plus et on tombe sur l'égalité begin() == end().
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Fabien LE LEZ
On Mon, 28 Jul 2003 11:15:27 +0200, "Olivier" wrote:
je fait une collection d'article
(std::vector<TArticle *> _pCoArt;)
Ça, c'est une collection de _pointeurs_ vers des articles. Es-tu bien sûr que c'est ce que tu veux ? En général, on utilise plutôt un std::vector<TArticle> : l'intérêt de la STL, c'est justement de ne pas à aller tripatouiller dans les new/delete...
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
On Mon, 28 Jul 2003 11:15:27 +0200, "Olivier" <osarda@free.fr> wrote:
je fait une collection d'article
(std::vector<TArticle *> _pCoArt;)
Ça, c'est une collection de _pointeurs_ vers des articles. Es-tu bien
sûr que c'est ce que tu veux ?
En général, on utilise plutôt un std::vector<TArticle> : l'intérêt de
la STL, c'est justement de ne pas à aller tripatouiller dans les
new/delete...
--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
On Mon, 28 Jul 2003 11:15:27 +0200, "Olivier" wrote:
je fait une collection d'article
(std::vector<TArticle *> _pCoArt;)
Ça, c'est une collection de _pointeurs_ vers des articles. Es-tu bien sûr que c'est ce que tu veux ? En général, on utilise plutôt un std::vector<TArticle> : l'intérêt de la STL, c'est justement de ne pas à aller tripatouiller dans les new/delete...
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
Luc Hermitte
Fabien LE LEZ wrote in news::
On Mon, 28 Jul 2003 11:15:27 +0200, "Olivier" wrote:
je fait une collection d'article
(std::vector<TArticle *> _pCoArt;)
Ça, c'est une collection de _pointeurs_ vers des articles. Es-tu bien sûr que c'est ce que tu veux ? En général, on utilise plutôt un std::vector<TArticle> : l'intérêt de la STL, c'est justement de ne pas à aller tripatouiller dans les new/delete...
Hum ... pas d'accord. Si la classe est complexe, avec plein de champs, sans constructeur sans arguments, opérateurs de recopie et autres moyens de vérifier que l'objet manipulé est bien valide ... je fais comme lui.
Personnellement, j'utilise plus souvent des collections de pointeurs que des collections de classes.
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Fabien LE LEZ <gramster@gramster.com> wrote in
news:h27aivot7t3vr0q1g55rb5arjkjrb1khjv@4ax.com:
On Mon, 28 Jul 2003 11:15:27 +0200, "Olivier" <osarda@free.fr> wrote:
je fait une collection d'article
(std::vector<TArticle *> _pCoArt;)
Ça, c'est une collection de _pointeurs_ vers des articles. Es-tu bien
sûr que c'est ce que tu veux ?
En général, on utilise plutôt un std::vector<TArticle> : l'intérêt de
la STL, c'est justement de ne pas à aller tripatouiller dans les
new/delete...
Hum ... pas d'accord. Si la classe est complexe, avec plein de champs,
sans constructeur sans arguments, opérateurs de recopie et autres moyens
de vérifier que l'objet manipulé est bien valide ... je fais comme lui.
Personnellement, j'utilise plus souvent des collections de pointeurs que
des collections de classes.
--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>
On Mon, 28 Jul 2003 11:15:27 +0200, "Olivier" wrote:
je fait une collection d'article
(std::vector<TArticle *> _pCoArt;)
Ça, c'est une collection de _pointeurs_ vers des articles. Es-tu bien sûr que c'est ce que tu veux ? En général, on utilise plutôt un std::vector<TArticle> : l'intérêt de la STL, c'est justement de ne pas à aller tripatouiller dans les new/delete...
Hum ... pas d'accord. Si la classe est complexe, avec plein de champs, sans constructeur sans arguments, opérateurs de recopie et autres moyens de vérifier que l'objet manipulé est bien valide ... je fais comme lui.
Personnellement, j'utilise plus souvent des collections de pointeurs que des collections de classes.
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Michael Monerau
Luc Hermitte wrote:
Fabien LE LEZ wrote in news::
On Mon, 28 Jul 2003 11:15:27 +0200, "Olivier" wrote:
je fait une collection d'article
(std::vector<TArticle *> _pCoArt;)
Ça, c'est une collection de _pointeurs_ vers des articles. Es-tu bien sûr que c'est ce que tu veux ? En général, on utilise plutôt un std::vector<TArticle> : l'intérêt de la STL, c'est justement de ne pas à aller tripatouiller dans les new/delete...
Hum ... pas d'accord. Si la classe est complexe, avec plein de champs, sans constructeur sans arguments, opérateurs de recopie et autres moyens de vérifier que l'objet manipulé est bien valide ... je fais comme lui.
Personnellement, j'utilise plus souvent des collections de pointeurs que des collections de classes.
Moi aussi, mais surtout pour le polymorphisme. De toute façon, ce n'est pas bien compliqué de faire des delete (mais fastidieux, je te l'accorde Fabien :) ). -- <=-Michaël"Cortex" Monerau.-=>
Luc Hermitte wrote:
Fabien LE LEZ <gramster@gramster.com> wrote in
news:h27aivot7t3vr0q1g55rb5arjkjrb1khjv@4ax.com:
On Mon, 28 Jul 2003 11:15:27 +0200, "Olivier" <osarda@free.fr> wrote:
je fait une collection d'article
(std::vector<TArticle *> _pCoArt;)
Ça, c'est une collection de _pointeurs_ vers des articles. Es-tu bien
sûr que c'est ce que tu veux ?
En général, on utilise plutôt un std::vector<TArticle> : l'intérêt de
la STL, c'est justement de ne pas à aller tripatouiller dans les
new/delete...
Hum ... pas d'accord. Si la classe est complexe, avec plein de champs,
sans constructeur sans arguments, opérateurs de recopie et autres
moyens de vérifier que l'objet manipulé est bien valide ... je fais
comme lui.
Personnellement, j'utilise plus souvent des collections de pointeurs
que des collections de classes.
Moi aussi, mais surtout pour le polymorphisme.
De toute façon, ce n'est pas bien compliqué de faire des delete (mais
fastidieux, je te l'accorde Fabien :) ).
--
<=-Michaël"Cortex" Monerau.-=>
On Mon, 28 Jul 2003 11:15:27 +0200, "Olivier" wrote:
je fait une collection d'article
(std::vector<TArticle *> _pCoArt;)
Ça, c'est une collection de _pointeurs_ vers des articles. Es-tu bien sûr que c'est ce que tu veux ? En général, on utilise plutôt un std::vector<TArticle> : l'intérêt de la STL, c'est justement de ne pas à aller tripatouiller dans les new/delete...
Hum ... pas d'accord. Si la classe est complexe, avec plein de champs, sans constructeur sans arguments, opérateurs de recopie et autres moyens de vérifier que l'objet manipulé est bien valide ... je fais comme lui.
Personnellement, j'utilise plus souvent des collections de pointeurs que des collections de classes.
Moi aussi, mais surtout pour le polymorphisme. De toute façon, ce n'est pas bien compliqué de faire des delete (mais fastidieux, je te l'accorde Fabien :) ). -- <=-Michaël"Cortex" Monerau.-=>
Christophe Lephay
"Olivier" a écrit dans le message de news:3f24f839$0$24583$
J'ai regarde par rapport a la doc quand c'est le dernier onfait un push_back non ?
Christophe Lephay a écrit dans le message : bg2sg1$k3v$
"Olivier" a écrit dans le message de news:3f24ea3a$0$24784$
Peut-être c'est mieux de faire le delete avant l'erase...
Par ailleurs, je comprends pas trop à quoi sert ton push_back...
j'ai lu ton post sur pop_back() plutôt que push_back(). Ceci dit, trois choses : 1- évites le préfixe _ (c'est juste toléré dans les classes, mais à déconseiller dune manière générale, ne serait-ce que parce que c'est dur à prononcer, ce qui ne facilite pas les revues de code) 2- erase marche aussi pour effacer le dernier élément, il est donc inutile de gérer ce cas de manière spécifique 3- tu ne peux plus accéder à l'élément d'un tableau si tu le supprimes.
Essaies donc de remplacer par le code suivant :
delete _pArt; // on supprime l'élément pointé _pCoArt.erase( i ); // on supprime le pointeur, maintenant invalide, du vector
Chris
"Olivier" <osarda@free.fr> a écrit dans le message de
news:3f24f839$0$24583$626a54ce@news.free.fr...
J'ai regarde par rapport a la doc
quand c'est le dernier onfait un push_back non ?
Christophe Lephay <christophe-lephay@wanadoo.fr> a écrit dans le message :
bg2sg1$k3v$1@news-reader2.wanadoo.fr...
"Olivier" <osarda@free.fr> a écrit dans le message de
news:3f24ea3a$0$24784$626a54ce@news.free.fr...
Peut-être c'est mieux de faire le delete avant l'erase...
Par ailleurs, je comprends pas trop à quoi sert ton push_back...
j'ai lu ton post sur pop_back() plutôt que push_back(). Ceci dit, trois
choses :
1- évites le préfixe _ (c'est juste toléré dans les classes, mais à
déconseiller dune manière générale, ne serait-ce que parce que c'est dur à
prononcer, ce qui ne facilite pas les revues de code)
2- erase marche aussi pour effacer le dernier élément, il est donc inutile
de gérer ce cas de manière spécifique
3- tu ne peux plus accéder à l'élément d'un tableau si tu le supprimes.
Essaies donc de remplacer par le code suivant :
delete _pArt; // on supprime l'élément pointé
_pCoArt.erase( i ); // on supprime le pointeur, maintenant invalide, du
vector
Peut-être c'est mieux de faire le delete avant l'erase...
Par ailleurs, je comprends pas trop à quoi sert ton push_back...
j'ai lu ton post sur pop_back() plutôt que push_back(). Ceci dit, trois choses : 1- évites le préfixe _ (c'est juste toléré dans les classes, mais à déconseiller dune manière générale, ne serait-ce que parce que c'est dur à prononcer, ce qui ne facilite pas les revues de code) 2- erase marche aussi pour effacer le dernier élément, il est donc inutile de gérer ce cas de manière spécifique 3- tu ne peux plus accéder à l'élément d'un tableau si tu le supprimes.
Essaies donc de remplacer par le code suivant :
delete _pArt; // on supprime l'élément pointé _pCoArt.erase( i ); // on supprime le pointeur, maintenant invalide, du vector
Chris
Fabien LE LEZ
On Mon, 28 Jul 2003 15:10:09 +0200, Luc Hermitte wrote:
Hum ... pas d'accord. Si la classe est complexe, avec plein de champs, sans constructeur sans arguments, opérateurs de recopie et autres moyens de vérifier que l'objet manipulé est bien valide ... je fais comme lui.
Etant donné que l'op parlait d'une collection d'articles et pas de pointeurs, et étant donné son niveau présumé (d'après son post), j'estime que la question "Es-tu bien sûr que c'est ce que tu veux ?" est légitime.
Personnellement, j'utilise plus souvent des collections de pointeurs que des collections de classes.
Qu'entends-tu par "utiliser plus souvent" ? Généralement, dans mes programmes, j'ai très peu de collections de pointeurs (et la plupart du temps il s'agit de pointeurs qui se "deletent" eux-mêmes) et beaucoup de collections d'objets, mais comme les quelques collections de pointeurs ont un rôle fondamentale (par exemple, l'ensemble des fenêtres et sous-fenêtres de mon application est une collection de pointeurs en forme d'arbre, et la quasi-totalité du code est dans ses fonctions membres), on pourrait aussi dire que "j'utilise plus souvent des collections de pointeurs" ;-)
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
Hum ... pas d'accord. Si la classe est complexe, avec plein de champs,
sans constructeur sans arguments, opérateurs de recopie et autres moyens
de vérifier que l'objet manipulé est bien valide ... je fais comme lui.
Etant donné que l'op parlait d'une collection d'articles et pas de
pointeurs, et étant donné son niveau présumé (d'après son post),
j'estime que la question "Es-tu bien sûr que c'est ce que tu veux ?"
est légitime.
Personnellement, j'utilise plus souvent des collections de pointeurs que
des collections de classes.
Qu'entends-tu par "utiliser plus souvent" ? Généralement, dans mes
programmes, j'ai très peu de collections de pointeurs (et la plupart
du temps il s'agit de pointeurs qui se "deletent" eux-mêmes) et
beaucoup de collections d'objets, mais comme les quelques collections
de pointeurs ont un rôle fondamentale (par exemple, l'ensemble des
fenêtres et sous-fenêtres de mon application est une collection de
pointeurs en forme d'arbre, et la quasi-totalité du code est dans ses
fonctions membres), on pourrait aussi dire que "j'utilise plus souvent
des collections de pointeurs" ;-)
--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
On Mon, 28 Jul 2003 15:10:09 +0200, Luc Hermitte wrote:
Hum ... pas d'accord. Si la classe est complexe, avec plein de champs, sans constructeur sans arguments, opérateurs de recopie et autres moyens de vérifier que l'objet manipulé est bien valide ... je fais comme lui.
Etant donné que l'op parlait d'une collection d'articles et pas de pointeurs, et étant donné son niveau présumé (d'après son post), j'estime que la question "Es-tu bien sûr que c'est ce que tu veux ?" est légitime.
Personnellement, j'utilise plus souvent des collections de pointeurs que des collections de classes.
Qu'entends-tu par "utiliser plus souvent" ? Généralement, dans mes programmes, j'ai très peu de collections de pointeurs (et la plupart du temps il s'agit de pointeurs qui se "deletent" eux-mêmes) et beaucoup de collections d'objets, mais comme les quelques collections de pointeurs ont un rôle fondamentale (par exemple, l'ensemble des fenêtres et sous-fenêtres de mon application est une collection de pointeurs en forme d'arbre, et la quasi-totalité du code est dans ses fonctions membres), on pourrait aussi dire que "j'utilise plus souvent des collections de pointeurs" ;-)
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
Luc Hermitte
Fabien LE LEZ wrote in news::
On Mon, 28 Jul 2003 15:10:09 +0200, Luc Hermitte wrote:
Personnellement, j'utilise plus souvent des collections de pointeurs que des collections de classes.
Qu'entends-tu par "utiliser plus souvent" ? Généralement, dans mes programmes, j'ai très peu de collections de pointeurs (et la plupart du temps il s'agit de pointeurs qui se "deletent" eux-mêmes) et beaucoup de collections d'objets, mais comme les quelques collections de pointeurs ont un rôle fondamentale (par exemple, l'ensemble des fenêtres et sous-fenêtres de mon application est une collection de pointeurs en forme d'arbre, et la quasi-totalité du code est dans ses fonctions membres), on pourrait aussi dire que "j'utilise plus souvent des collections de pointeurs" ;-)
J'ai surtout des collections de pointeurs (futés ou non). Il faut dire que je donne très rarement une sémantique de copie à mes objets. Je sais que techniquement cela pourrait simplifier des choses, mais vu leur rôles, cela a rarement du sens -- sans parler des tous les problèmes induits par le polymorphisme vis-à-vis de la duplication. D'où au final des collections de pointeurs.
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Fabien LE LEZ <gramster@gramster.com> wrote in
news:q2ibivoue96tndl34jrlif3kjae4et5d7b@4ax.com:
Personnellement, j'utilise plus souvent des collections de pointeurs
que des collections de classes.
Qu'entends-tu par "utiliser plus souvent" ? Généralement, dans mes
programmes, j'ai très peu de collections de pointeurs (et la plupart
du temps il s'agit de pointeurs qui se "deletent" eux-mêmes) et
beaucoup de collections d'objets, mais comme les quelques collections
de pointeurs ont un rôle fondamentale (par exemple, l'ensemble des
fenêtres et sous-fenêtres de mon application est une collection de
pointeurs en forme d'arbre, et la quasi-totalité du code est dans ses
fonctions membres), on pourrait aussi dire que "j'utilise plus souvent
des collections de pointeurs" ;-)
J'ai surtout des collections de pointeurs (futés ou non). Il faut dire
que je donne très rarement une sémantique de copie à mes objets. Je sais
que techniquement cela pourrait simplifier des choses, mais vu leur
rôles, cela a rarement du sens -- sans parler des tous les problèmes
induits par le polymorphisme vis-à-vis de la duplication.
D'où au final des collections de pointeurs.
--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>
On Mon, 28 Jul 2003 15:10:09 +0200, Luc Hermitte wrote:
Personnellement, j'utilise plus souvent des collections de pointeurs que des collections de classes.
Qu'entends-tu par "utiliser plus souvent" ? Généralement, dans mes programmes, j'ai très peu de collections de pointeurs (et la plupart du temps il s'agit de pointeurs qui se "deletent" eux-mêmes) et beaucoup de collections d'objets, mais comme les quelques collections de pointeurs ont un rôle fondamentale (par exemple, l'ensemble des fenêtres et sous-fenêtres de mon application est une collection de pointeurs en forme d'arbre, et la quasi-totalité du code est dans ses fonctions membres), on pourrait aussi dire que "j'utilise plus souvent des collections de pointeurs" ;-)
J'ai surtout des collections de pointeurs (futés ou non). Il faut dire que je donne très rarement une sémantique de copie à mes objets. Je sais que techniquement cela pourrait simplifier des choses, mais vu leur rôles, cela a rarement du sens -- sans parler des tous les problèmes induits par le polymorphisme vis-à-vis de la duplication. D'où au final des collections de pointeurs.
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Fabien LE LEZ
On Tue, 29 Jul 2003 14:47:54 +0200, Luc Hermitte wrote:
J'ai surtout des collections de pointeurs (futés ou non). Il faut dire que je donne très rarement une sémantique de copie à mes objets
Je n'ai pas fait de statistiques sur mon code, mais j'ai l'impression que plus un objet est petit, plus j'ai de collections de ce type d'objets. Et les petits objets ont souvent une sémantique de valeur.
En particulier, j'ai dans mon code un sacré paquet de std::basic_string<char>, de std::vector<int>, de std::map<int,int>, etc. -- à tel point qu'en nombre de collections instanciées, les trois que j'ai citées doivent représenter la grande majorité des collections de mon code.
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
J'ai surtout des collections de pointeurs (futés ou non). Il faut dire
que je donne très rarement une sémantique de copie à mes objets
Je n'ai pas fait de statistiques sur mon code, mais j'ai l'impression
que plus un objet est petit, plus j'ai de collections de ce type
d'objets. Et les petits objets ont souvent une sémantique de valeur.
En particulier, j'ai dans mon code un sacré paquet de
std::basic_string<char>, de std::vector<int>, de std::map<int,int>,
etc. -- à tel point qu'en nombre de collections instanciées, les trois
que j'ai citées doivent représenter la grande majorité des collections
de mon code.
--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
On Tue, 29 Jul 2003 14:47:54 +0200, Luc Hermitte wrote:
J'ai surtout des collections de pointeurs (futés ou non). Il faut dire que je donne très rarement une sémantique de copie à mes objets
Je n'ai pas fait de statistiques sur mon code, mais j'ai l'impression que plus un objet est petit, plus j'ai de collections de ce type d'objets. Et les petits objets ont souvent une sémantique de valeur.
En particulier, j'ai dans mon code un sacré paquet de std::basic_string<char>, de std::vector<int>, de std::map<int,int>, etc. -- à tel point qu'en nombre de collections instanciées, les trois que j'ai citées doivent représenter la grande majorité des collections de mon code.
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html