Est-ce que je dois écrire ++it au lieu de it++ ??
En fait, est-ce que je parcours bien (et détruit) tous les éléments de la
map en procédant de cette manière ?
En fait, est-ce que je parcours bien (et détruit) tous les éléments de la map en procédant de cette manière ? oui.
Mais pourquoi ne pas utiliser des pointeurs intelligents ;-)
-- -------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
En fait, est-ce que je parcours bien (et détruit) tous les éléments de la
map en procédant de cette manière ?
oui.
Mais pourquoi ne pas utiliser des pointeurs intelligents ;-)
--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/
En fait, est-ce que je parcours bien (et détruit) tous les éléments de la map en procédant de cette manière ? oui.
Mais pourquoi ne pas utiliser des pointeurs intelligents ;-)
-- -------------------------------------------- Benoît Rousseau : roussebe at spray dot se Jouez en programmant : http://realtimebattle.sourceforge.net/
Zouplaz
Benoit Rousseau - :
oui. Mais pourquoi ne pas utiliser des pointeurs intelligents ;-)
Parce que les pointeurs bêtes sont à la programmation ce que le Roquefort est au Kiri !! Je suis pour le terroir et les choses "vraies" ! :-)))
Benoit Rousseau - not.provided@no.spam :
oui.
Mais pourquoi ne pas utiliser des pointeurs intelligents ;-)
Parce que les pointeurs bêtes sont à la programmation ce que le Roquefort
est au Kiri !! Je suis pour le terroir et les choses "vraies" ! :-)))
Il y a potentiellement un leger coût en performance à écrire it++. C'est à mesurer si nécessaire en fonction du projet, mais comme dans ce genre de cas, je ne vois pas d'inconvénients à écrire ++it, j'ai pris l'habitude d'écrire ça par défaut. Mais je ne corrigerais pas un code avec it++ juste pour le plaisir.
En fait, est-ce que je parcours bien (et détruit) tous les éléments de la map en procédant de cette manière ?
Il y a potentiellement un leger coût en performance à écrire it++. C'est
à mesurer si nécessaire en fonction du projet, mais comme dans ce genre
de cas, je ne vois pas d'inconvénients à écrire ++it, j'ai pris
l'habitude d'écrire ça par défaut. Mais je ne corrigerais pas un code
avec it++ juste pour le plaisir.
En fait, est-ce que je parcours bien (et détruit) tous les éléments de la
map en procédant de cette manière ?
Il y a potentiellement un leger coût en performance à écrire it++. C'est à mesurer si nécessaire en fonction du projet, mais comme dans ce genre de cas, je ne vois pas d'inconvénients à écrire ++it, j'ai pris l'habitude d'écrire ça par défaut. Mais je ne corrigerais pas un code avec it++ juste pour le plaisir.
En fait, est-ce que je parcours bien (et détruit) tous les éléments de la map en procédant de cette manière ?
Oui
-- Loïc
Christophe Lephay
Loïc Joly wrote:
Zouplaz wrote:
for(it=m_frameSequences.begin();it!=m_frameSequences.end();it++) delete (*it).second; En fait, est-ce que je parcours bien (et détruit) tous les éléments de la map en procédant de cette manière ?
Oui
Encore que la question est ambigue : si les pointeurs sont bien effacés, les éléments restent dans la map (qui sont donc invalides). Ajoute un m_frameSequences.clear(); après ta boucle...
Chris
Loïc Joly wrote:
Zouplaz wrote:
for(it=m_frameSequences.begin();it!=m_frameSequences.end();it++)
delete (*it).second;
En fait, est-ce que je parcours bien (et détruit) tous les éléments
de la map en procédant de cette manière ?
Oui
Encore que la question est ambigue : si les pointeurs sont bien effacés, les
éléments restent dans la map (qui sont donc invalides).
Ajoute un m_frameSequences.clear(); après ta boucle...
for(it=m_frameSequences.begin();it!=m_frameSequences.end();it++) delete (*it).second; En fait, est-ce que je parcours bien (et détruit) tous les éléments de la map en procédant de cette manière ?
Oui
Encore que la question est ambigue : si les pointeurs sont bien effacés, les éléments restent dans la map (qui sont donc invalides). Ajoute un m_frameSequences.clear(); après ta boucle...
Chris
tib.motuelle
Bertrand Motuelle wrote in message news:<bpdtg7$2p2e$...
Égal. En théorie, dans certains cas, ++it pourrait être plus performant, mais je n'ai jamais trouvé une différence mésurable. Sinon, c'est pareil au même.
C-à-d un comportement indéfini selon la norme, mais pas de problème en pratique.
En fait, est-ce que je parcours bien (et détruit) tous les éléments de la map en procédant de cette manière ?
Si on fait abstraction du comportement indéfini (ce qu'on peut faire sans souci dans la pratique), tu parcous tous les éléments de la map dans les deux cas.
-- 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
Zouplaz <pouet@pouet.com> wrote in message
news:<Xns9437C2E00BAE9Zoupla@213.228.0.32>...
Égal. En théorie, dans certains cas, ++it pourrait être plus performant,
mais je n'ai jamais trouvé une différence mésurable. Sinon, c'est pareil
au même.
C-à-d un comportement indéfini selon la norme, mais pas de problème en
pratique.
En fait, est-ce que je parcours bien (et détruit) tous les éléments de
la map en procédant de cette manière ?
Si on fait abstraction du comportement indéfini (ce qu'on peut faire
sans souci dans la pratique), tu parcous tous les éléments de la map
dans les deux cas.
--
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
Égal. En théorie, dans certains cas, ++it pourrait être plus performant, mais je n'ai jamais trouvé une différence mésurable. Sinon, c'est pareil au même.
C-à-d un comportement indéfini selon la norme, mais pas de problème en pratique.
En fait, est-ce que je parcours bien (et détruit) tous les éléments de la map en procédant de cette manière ?
Si on fait abstraction du comportement indéfini (ce qu'on peut faire sans souci dans la pratique), tu parcous tous les éléments de la map dans les deux cas.
-- 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
Loïc Joly
wrote:
Est-ce que je dois écrire ++it au lieu de it++ ??
Égal. En théorie, dans certains cas, ++it pourrait être plus performant, mais je n'ai jamais trouvé une différence mésurable. Sinon, c'est pareil au même.
C-à-d un comportement indéfini selon la norme, mais pas de problème en pratique.
Peux-tu préciser en quoi le comportement est indéfini ?
-- Loïc
kanze@gabi-soft.fr wrote:
Est-ce que je dois écrire ++it au lieu de it++ ??
Égal. En théorie, dans certains cas, ++it pourrait être plus performant,
mais je n'ai jamais trouvé une différence mésurable. Sinon, c'est pareil
au même.
C-à-d un comportement indéfini selon la norme, mais pas de problème en
pratique.
Peux-tu préciser en quoi le comportement est indéfini ?
Égal. En théorie, dans certains cas, ++it pourrait être plus performant, mais je n'ai jamais trouvé une différence mésurable. Sinon, c'est pareil au même.
C-à-d un comportement indéfini selon la norme, mais pas de problème en pratique.
Peux-tu préciser en quoi le comportement est indéfini ?
-- Loïc
tib.motuelle
Loïc Joly wrote in message news:<bpgv6s$kd2$...
wrote:
Est-ce que je dois écrire ++it au lieu de it++ ??
Égal. En théorie, dans certains cas, ++it pourrait être plus performant, mais je n'ai jamais trouvé une différence mésurable. Sinon, c'est pareil au même.
C-à-d un comportement indéfini selon la norme, mais pas de problème en pratique.
Peux-tu préciser en quoi le comportement est indéfini ?
Je pense que la remarque de James s'applique au fait que des pointeurs sur objets deletés sont présents dans la collection. Et une implémentation pourrait éventuellement manipuler ces objets invalides (par exemple dans le destructeur de la collection) ce qui est un comportement indéfini. Dans la pratique ca ne pose pas de problème. Mais si on est un peu parano, il faudrait écrire:
for(it=m_frameSequences.begin();it!=m_frameSequences.end();it++) { delete (*it).second; it->second = 0; // on ajoute cette ligne }
Je trouve qu'une bonne approche est d'encapsuler une fois pour toute cette cuisine dans un foncteur avec plusieurs operateurs () (pour des pointeurs simples, pour des pair dont l'élement second est un pointeur), et d'utiliser for_each + ce foncteur.
Loïc Joly <loic.actarus.joly@wanadoo.fr> wrote in message news:<bpgv6s$kd2$1@news-reader4.wanadoo.fr>...
kanze@gabi-soft.fr wrote:
Est-ce que je dois écrire ++it au lieu de it++ ??
Égal. En théorie, dans certains cas, ++it pourrait être plus performant,
mais je n'ai jamais trouvé une différence mésurable. Sinon, c'est pareil
au même.
C-à-d un comportement indéfini selon la norme, mais pas de problème en
pratique.
Peux-tu préciser en quoi le comportement est indéfini ?
Je pense que la remarque de James s'applique au fait que des pointeurs
sur objets deletés sont présents dans la collection.
Et une implémentation pourrait éventuellement manipuler ces objets
invalides (par exemple dans le destructeur de la collection) ce qui
est un comportement indéfini.
Dans la pratique ca ne pose pas de problème. Mais si on est un peu
parano, il faudrait écrire:
for(it=m_frameSequences.begin();it!=m_frameSequences.end();it++)
{
delete (*it).second;
it->second = 0; // on ajoute cette ligne
}
Je trouve qu'une bonne approche est d'encapsuler une fois pour toute
cette cuisine dans un foncteur avec plusieurs operateurs () (pour des
pointeurs simples, pour des pair dont l'élement second est un
pointeur), et d'utiliser for_each + ce foncteur.
Égal. En théorie, dans certains cas, ++it pourrait être plus performant, mais je n'ai jamais trouvé une différence mésurable. Sinon, c'est pareil au même.
C-à-d un comportement indéfini selon la norme, mais pas de problème en pratique.
Peux-tu préciser en quoi le comportement est indéfini ?
Je pense que la remarque de James s'applique au fait que des pointeurs sur objets deletés sont présents dans la collection. Et une implémentation pourrait éventuellement manipuler ces objets invalides (par exemple dans le destructeur de la collection) ce qui est un comportement indéfini. Dans la pratique ca ne pose pas de problème. Mais si on est un peu parano, il faudrait écrire:
for(it=m_frameSequences.begin();it!=m_frameSequences.end();it++) { delete (*it).second; it->second = 0; // on ajoute cette ligne }
Je trouve qu'une bonne approche est d'encapsuler une fois pour toute cette cuisine dans un foncteur avec plusieurs operateurs () (pour des pointeurs simples, pour des pair dont l'élement second est un pointeur), et d'utiliser for_each + ce foncteur.