bonjour
j'ai besoin de faire une liste d'objet qui se d=E9truiront automatiquemen=
t.
Pour cel=E0 en utilisant la STL, j'utilise une list d'auto_ptr.
plus pr=E9cis=E9ment:
class A;
typedef auto_ptr<A> auto_A;
typedef list<auto_ptr> list_A;
ainsi, quand j'ajoute un =E9l=E9ment, il se cr=E9=E9 (le constructeur est=
=20
appel=E9), puis je l'ajoute dans la list (pas de copie, pas de=20
constructeur appell=E9). Puis =E0 la destruction de la list (lors d'un er=
ase=20
ou d'un pop_*), le destructeur est appell=E9.
J'ai l'impression que =E7a marche mais mon programme semble instable de=20
temps en temps j'aimerais savoir si =E7a peu venir de cette m=E9thode=20
(est-elle vraiment propre?). Y a t il un autre moyen?
Avant j'utilisais une list<A> qui marchait mais pour ajouter un =E9l=E9me=
nt=20
il fallait le cr=E9er, puis lors d'un push_*, il en faisait la copie, et =
ensuite pouvait etre d=E9truit automatiquement.
Je me demande si en utilisant les allocators =E7a ne marcherais pas.
"Gabriel Dos Reis" a écrit dans le message de news:
Pourquoi c'esyt si important ?
tu voulais dire : "Pourquoi c'est-y si important" ?
(le fait que le y soit pas loin du t pourrait tout aussi bien laisser penser qu'il s'agit d'une simple faute de frappe)
Chris
;)
Fabien LE LEZ
On Wed, 20 Aug 2003 19:25:32 +0200, "Christophe Lephay" wrote:
(le fait que le y soit pas loin du t pourrait tout aussi bien laisser penser qu'il s'agit d'une simple faute de frappe)
De toutes façons, c'est une faute de frappe, quelle que soit l'interprétation ;-)
-- 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 Wed, 20 Aug 2003 19:25:32 +0200, "Christophe Lephay"
<christophe-lephay@wanadoo.fr> wrote:
(le fait que le y soit pas loin du t pourrait tout aussi bien laisser penser
qu'il s'agit d'une simple faute de frappe)
De toutes façons, c'est une faute de frappe, quelle que soit
l'interprétation ;-)
--
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 Wed, 20 Aug 2003 19:25:32 +0200, "Christophe Lephay" wrote:
(le fait que le y soit pas loin du t pourrait tout aussi bien laisser penser qu'il s'agit d'une simple faute de frappe)
De toutes façons, c'est une faute de frappe, quelle que soit l'interprétation ;-)
-- 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
Gabriel Dos Reis
Gaetan writes:
| Gabriel Dos Reis wrote: | | > Gaetan writes: | > | Fabien LE LEZ wrote: | > | > On Wed, 20 Aug 2003 15:27:41 +0200, Gaetan | > | > wrote: | > | > | > | >>Donc il y a un objet construit pour "rien"... | > | > Et est-ce problématique ? | > | > | > | | oui dans le sens ou il peut y avoir + rapide (et je ne trouve | > pas celà | > as-tu mesuré ? Sais-tu ce qu'un new coûte comparé à la copie ? | | un ( new + copie de pointeur ) comparé au ( new + copie + destruction ).
Non. C'est "new + constructeur + allocation" (ton utilisation de pointeur) contre une allocations "optimisée" + constructeur + copie. Ma question est est-ce que tu as comparé le coût de la copie avec le new. Et quand je dis comparé, ce n'est pas seulement un calcul pifométrique, je parle de mesures concrètes.
-- Gaby
Gaetan <gaetan.semet@free.fr> writes:
| Gabriel Dos Reis wrote:
|
| > Gaetan <gaetan.semet@free.fr> writes:
| > | Fabien LE LEZ wrote:
| > | > On Wed, 20 Aug 2003 15:27:41 +0200, Gaetan <gaetan.semet@free.fr>
| > | > wrote:
| > | >
| > | >>Donc il y a un objet construit pour "rien"...
| > | > Et est-ce problématique ?
| > | >
| > | | oui dans le sens ou il peut y avoir + rapide (et je ne trouve
| > pas celà
| > as-tu mesuré ? Sais-tu ce qu'un new coûte comparé à la copie ?
|
| un ( new + copie de pointeur ) comparé au ( new + copie + destruction ).
Non. C'est "new + constructeur + allocation" (ton utilisation de
pointeur) contre une allocations "optimisée" + constructeur + copie.
Ma question est est-ce que tu as comparé le coût de la copie avec le
new. Et quand je dis comparé, ce n'est pas seulement un calcul
pifométrique, je parle de mesures concrètes.
| Gabriel Dos Reis wrote: | | > Gaetan writes: | > | Fabien LE LEZ wrote: | > | > On Wed, 20 Aug 2003 15:27:41 +0200, Gaetan | > | > wrote: | > | > | > | >>Donc il y a un objet construit pour "rien"... | > | > Et est-ce problématique ? | > | > | > | | oui dans le sens ou il peut y avoir + rapide (et je ne trouve | > pas celà | > as-tu mesuré ? Sais-tu ce qu'un new coûte comparé à la copie ? | | un ( new + copie de pointeur ) comparé au ( new + copie + destruction ).
Non. C'est "new + constructeur + allocation" (ton utilisation de pointeur) contre une allocations "optimisée" + constructeur + copie. Ma question est est-ce que tu as comparé le coût de la copie avec le new. Et quand je dis comparé, ce n'est pas seulement un calcul pifométrique, je parle de mesures concrètes.
-- Gaby
Christophe Lephay
"Gaetan" a écrit dans le message de news:3f43ad76$0$16160$
as-tu mesuré ? Sais-tu ce qu'un new coûte comparé à la copie ?
un ( new + copie de pointeur ) comparé au ( new + copie + destruction ).
Pas tout à fait, dans la mesure où quand on permet aux objets d'être copiés (sémantique de valeur), un intéret important est qu'ils peuvent l'être sur la pile, ce qui en accélère les création et destructions en évitant d'avoir à des appels système.
Si tu utilises un profileur pour voir à quoi ton programme passe son temps, tes cheveux risquent de se dresser sur ta tête (si ce n'est de désespoir, au moins de surprise) quand tu vas voir le temps qu'il passe dans du code qui n'est pas le tien, peut-être au point d'oublier le concept même d'optimisation.
Chris
"Gaetan" <gaetan.semet@free.fr> a écrit dans le message de
news:3f43ad76$0$16160$626a54ce@news.free.fr...
as-tu mesuré ? Sais-tu ce qu'un new coûte comparé à la copie ?
un ( new + copie de pointeur ) comparé au ( new + copie + destruction ).
Pas tout à fait, dans la mesure où quand on permet aux objets d'être copiés
(sémantique de valeur), un intéret important est qu'ils peuvent l'être sur
la pile, ce qui en accélère les création et destructions en évitant d'avoir
à des appels système.
Si tu utilises un profileur pour voir à quoi ton programme passe son temps,
tes cheveux risquent de se dresser sur ta tête (si ce n'est de désespoir, au
moins de surprise) quand tu vas voir le temps qu'il passe dans du code qui
n'est pas le tien, peut-être au point d'oublier le concept même
d'optimisation.
"Gaetan" a écrit dans le message de news:3f43ad76$0$16160$
as-tu mesuré ? Sais-tu ce qu'un new coûte comparé à la copie ?
un ( new + copie de pointeur ) comparé au ( new + copie + destruction ).
Pas tout à fait, dans la mesure où quand on permet aux objets d'être copiés (sémantique de valeur), un intéret important est qu'ils peuvent l'être sur la pile, ce qui en accélère les création et destructions en évitant d'avoir à des appels système.
Si tu utilises un profileur pour voir à quoi ton programme passe son temps, tes cheveux risquent de se dresser sur ta tête (si ce n'est de désespoir, au moins de surprise) quand tu vas voir le temps qu'il passe dans du code qui n'est pas le tien, peut-être au point d'oublier le concept même d'optimisation.
Chris
Gabriel Dos Reis
"Christophe Lephay" writes:
| "Gabriel Dos Reis" a écrit dans le message de | news: | > Pourquoi c'esyt si important ? | | tu voulais dire : "Pourquoi c'est-y si important" ? | | (le fait que le y soit pas loin du t pourrait tout aussi bien laisser penser | qu'il s'agit d'une simple faute de frappe)
C'en est une faute. Il y a eu erreur de transmission.
| "Gabriel Dos Reis" <gdr@integrable-solutions.net> a écrit dans le message de
| news:m365ks45gg.fsf@uniton.integrable-
| > Pourquoi c'esyt si important ?
|
| tu voulais dire : "Pourquoi c'est-y si important" ?
|
| (le fait que le y soit pas loin du t pourrait tout aussi bien laisser penser
| qu'il s'agit d'une simple faute de frappe)
C'en est une faute. Il y a eu erreur de transmission.
| "Gabriel Dos Reis" a écrit dans le message de | news: | > Pourquoi c'esyt si important ? | | tu voulais dire : "Pourquoi c'est-y si important" ? | | (le fait que le y soit pas loin du t pourrait tout aussi bien laisser penser | qu'il s'agit d'une simple faute de frappe)
C'en est une faute. Il y a eu erreur de transmission.
Gaetan
Non. C'est "new + constructeur + allocation" (ton utilisation de pointeur) contre une allocations "optimisée" + constructeur + copie. Ma question est est-ce que tu as comparé le coût de la copie avec l e new. Et quand je dis comparé, ce n'est pas seulement un calcul pifométrique, je parle de mesures concrètes.
non
-- Gaby
--
~~ Gaetan ~~ http://www.xeberon.net
Non. C'est "new + constructeur + allocation" (ton utilisation de
pointeur) contre une allocations "optimisée" + constructeur + copie.
Ma question est est-ce que tu as comparé le coût de la copie avec l e
new. Et quand je dis comparé, ce n'est pas seulement un calcul
pifométrique, je parle de mesures concrètes.
Non. C'est "new + constructeur + allocation" (ton utilisation de pointeur) contre une allocations "optimisée" + constructeur + copie. Ma question est est-ce que tu as comparé le coût de la copie avec l e new. Et quand je dis comparé, ce n'est pas seulement un calcul pifométrique, je parle de mesures concrètes.
non
-- Gaby
--
~~ Gaetan ~~ http://www.xeberon.net
Patrick Mézard
bon bon mais je suis déçut dans un sens que la STL ne permette pas ce que je disais.
En fait c'est un peu plus profond que ça comme problème :
(A Proposal to Add Move Semantics Support to the C++) http://std.dkuug.dk/JTC1/SC22/WG21/docs/papers/2002/n1377.htm
Un début de bibliothèque alternative à la STL qui défini (sans support du langage et c'est là le gros problème) des propriétés "Movable" et "Transferable" sur les types contenus. Les benchmarks du site montrent un certrain gain par rapport à la STL dans les cas testés (le contraire eut été surprenant). Il y a eu une assez longue discussion sur comp.lang.c++.moderated (chercher <[ANN] NTL "Nonstandard Template Library"> sur google.groups) dont le principales conclusions étaients que : - Avec l'interface et le look'n'feel de la STL ce serait mieux - Ca reste un peu du bricolage au niveau du "Movable" parce que c'est assez dangereux en terme de maintenabilité. - C'est intéressant quand même parce que certains conteneurs ont des implémentations originales. http://www.volny.cz/cxl/overview.html
Donc mieux vaux faire une liste d'objet quitte à faire une recopie au lieu d'une simple allocation directement.
Oui, ou comme le disait Loïc, utiliser http://www.boost.org/libs/smart_ptr/shared_ptr.htm
Patrick Mézard
bon bon mais je suis déçut dans un sens que la STL ne permette pas ce
que je disais.
En fait c'est un peu plus profond que ça comme problème :
(A Proposal to Add Move Semantics Support to the C++)
http://std.dkuug.dk/JTC1/SC22/WG21/docs/papers/2002/n1377.htm
Un début de bibliothèque alternative à la STL qui défini (sans support du
langage et c'est là le gros problème) des propriétés "Movable" et
"Transferable" sur les types contenus. Les benchmarks du site montrent un
certrain gain par rapport à la STL dans les cas testés (le contraire eut été
surprenant). Il y a eu une assez longue discussion sur
comp.lang.c++.moderated (chercher <[ANN] NTL "Nonstandard Template Library">
sur google.groups) dont le principales conclusions étaients que :
- Avec l'interface et le look'n'feel de la STL ce serait mieux
- Ca reste un peu du bricolage au niveau du "Movable" parce que c'est assez
dangereux en terme de maintenabilité.
- C'est intéressant quand même parce que certains conteneurs ont des
implémentations originales.
http://www.volny.cz/cxl/overview.html
Donc mieux vaux faire une liste d'objet quitte à faire une recopie au
lieu d'une simple allocation directement.
Oui, ou comme le disait Loïc, utiliser
http://www.boost.org/libs/smart_ptr/shared_ptr.htm
bon bon mais je suis déçut dans un sens que la STL ne permette pas ce que je disais.
En fait c'est un peu plus profond que ça comme problème :
(A Proposal to Add Move Semantics Support to the C++) http://std.dkuug.dk/JTC1/SC22/WG21/docs/papers/2002/n1377.htm
Un début de bibliothèque alternative à la STL qui défini (sans support du langage et c'est là le gros problème) des propriétés "Movable" et "Transferable" sur les types contenus. Les benchmarks du site montrent un certrain gain par rapport à la STL dans les cas testés (le contraire eut été surprenant). Il y a eu une assez longue discussion sur comp.lang.c++.moderated (chercher <[ANN] NTL "Nonstandard Template Library"> sur google.groups) dont le principales conclusions étaients que : - Avec l'interface et le look'n'feel de la STL ce serait mieux - Ca reste un peu du bricolage au niveau du "Movable" parce que c'est assez dangereux en terme de maintenabilité. - C'est intéressant quand même parce que certains conteneurs ont des implémentations originales. http://www.volny.cz/cxl/overview.html
Donc mieux vaux faire une liste d'objet quitte à faire une recopie au lieu d'une simple allocation directement.
Oui, ou comme le disait Loïc, utiliser http://www.boost.org/libs/smart_ptr/shared_ptr.htm
Patrick Mézard
Gabriel Dos Reis
"Patrick Mézard" writes:
| >bon bon mais je suis déçut dans un sens que la STL ne permette pas ce | >que je disais. | | En fait c'est un peu plus profond que ça comme problème :
le lien que tu donnes contient des informations intéressantes mais le rapport entre le sujet en discussion et ls « move semantics » me semble très ténue, si ce n'est extra-terrestre.
| >bon bon mais je suis déçut dans un sens que la STL ne permette pas ce
| >que je disais.
|
| En fait c'est un peu plus profond que ça comme problème :
le lien que tu donnes contient des informations intéressantes mais le
rapport entre le sujet en discussion et ls « move semantics » me
semble très ténue, si ce n'est extra-terrestre.
| >bon bon mais je suis déçut dans un sens que la STL ne permette pas ce | >que je disais. | | En fait c'est un peu plus profond que ça comme problème :
le lien que tu donnes contient des informations intéressantes mais le rapport entre le sujet en discussion et ls « move semantics » me semble très ténue, si ce n'est extra-terrestre.
-- Gaby
Patrick Mézard
| >bon bon mais je suis déçut dans un sens que la STL ne permette pas ce | >que je disais. | | En fait c'est un peu plus profond que ça comme problème :
le lien que tu donnes contient des informations intéressantes mais le rapport entre le sujet en discussion et ls « move semantics » me semble très ténue, si ce n'est extra-terrestre.
Disons que j'ai compris qu'il était déçu par l'impossibilité d'éviter la création de temporaires (qui est la raison pour laquelle il a voulu utiliser des pointeurs puis des std::auto_ptr) et non par l'impossibilité d'utiliser std::auto_ptr dans les conteneurs de la STL (avec laquelle les deux liens n'ont effectivement aucun rapport, sinon extra-terrestre).
Patrick Mézard
| >bon bon mais je suis déçut dans un sens que la STL ne permette pas ce
| >que je disais.
|
| En fait c'est un peu plus profond que ça comme problème :
le lien que tu donnes contient des informations intéressantes mais le
rapport entre le sujet en discussion et ls « move semantics » me
semble très ténue, si ce n'est extra-terrestre.
Disons que j'ai compris qu'il était déçu par l'impossibilité d'éviter la
création de temporaires (qui est la raison pour laquelle il a voulu utiliser
des pointeurs puis des std::auto_ptr) et non par l'impossibilité d'utiliser
std::auto_ptr dans les conteneurs de la STL (avec laquelle les deux liens
n'ont effectivement aucun rapport, sinon extra-terrestre).
| >bon bon mais je suis déçut dans un sens que la STL ne permette pas ce | >que je disais. | | En fait c'est un peu plus profond que ça comme problème :
le lien que tu donnes contient des informations intéressantes mais le rapport entre le sujet en discussion et ls « move semantics » me semble très ténue, si ce n'est extra-terrestre.
Disons que j'ai compris qu'il était déçu par l'impossibilité d'éviter la création de temporaires (qui est la raison pour laquelle il a voulu utiliser des pointeurs puis des std::auto_ptr) et non par l'impossibilité d'utiliser std::auto_ptr dans les conteneurs de la STL (avec laquelle les deux liens n'ont effectivement aucun rapport, sinon extra-terrestre).
Patrick Mézard
Christophe de Vienne
Gabriel Dos Reis wrote:
"Patrick Mézard" writes:
| > | >bon bon mais je suis déçut dans un sens que la STL ne permette pas | > | >ce que je disais. | > | | > | En fait c'est un peu plus profond que ça comme problème : | > | > le lien que tu donnes contient des informations intéressantes mais le | > rapport entre le sujet en discussion et ls « move semantics » me | > semble très ténue, si ce n'est extra-terrestre. | | Disons que j'ai compris qu'il était déçu par l'impossibilité d'éviter la | création de temporaires
Mais même avec la « move semantics », il lui faudra créer des temporaires.
Mais à un coup moindre je me trompe ?
-- Christophe de Vienne Experience is something you don't get until just after you need it. Oliver's Law.
| > | >bon bon mais je suis déçut dans un sens que la STL ne permette pas
| > | >ce que je disais.
| > |
| > | En fait c'est un peu plus profond que ça comme problème :
| >
| > le lien que tu donnes contient des informations intéressantes mais le
| > rapport entre le sujet en discussion et ls « move semantics » me
| > semble très ténue, si ce n'est extra-terrestre.
|
| Disons que j'ai compris qu'il était déçu par l'impossibilité d'éviter la
| création de temporaires
Mais même avec la « move semantics », il lui faudra créer des
temporaires.
Mais à un coup moindre je me trompe ?
--
Christophe de Vienne
Experience is something you don't get until just after you need it.
Oliver's Law.
| > | >bon bon mais je suis déçut dans un sens que la STL ne permette pas | > | >ce que je disais. | > | | > | En fait c'est un peu plus profond que ça comme problème : | > | > le lien que tu donnes contient des informations intéressantes mais le | > rapport entre le sujet en discussion et ls « move semantics » me | > semble très ténue, si ce n'est extra-terrestre. | | Disons que j'ai compris qu'il était déçu par l'impossibilité d'éviter la | création de temporaires
Mais même avec la « move semantics », il lui faudra créer des temporaires.
Mais à un coup moindre je me trompe ?
-- Christophe de Vienne Experience is something you don't get until just after you need it. Oliver's Law.