Franck Branjonneau wrote:
2/ Oui j'utilise des std::vector<> pour mes piles ; non pas des
std::deque<>. Et là je m'interroge. Le std::deque<> ne fait-il
pas une meilleure gestion de la mémoire que le std::vector<>
lors d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des
piles, vector me semble meilleur avec les cas d'utilisation
classiques.
Franck Branjonneau wrote:
2/ Oui j'utilise des std::vector<> pour mes piles ; non pas des
std::deque<>. Et là je m'interroge. Le std::deque<> ne fait-il
pas une meilleure gestion de la mémoire que le std::vector<>
lors d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des
piles, vector me semble meilleur avec les cas d'utilisation
classiques.
Franck Branjonneau wrote:
2/ Oui j'utilise des std::vector<> pour mes piles ; non pas des
std::deque<>. Et là je m'interroge. Le std::deque<> ne fait-il
pas une meilleure gestion de la mémoire que le std::vector<>
lors d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des
piles, vector me semble meilleur avec les cas d'utilisation
classiques.
Dans news:cbcj6n$6r4$, LoïcFranck Branjonneau wrote:2/ Oui j'utilise des std::vector<> pour mes piles ; non pas des
std::deque<>. Et là je m'interroge. Le std::deque<> ne fait-il
pas une meilleure gestion de la mémoire que le std::vector<>
lors d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des
piles, vector me semble meilleur avec les cas d'utilisation
classiques.
Tu peux expliquer ? Parce que d'après moi, la norme ne choisit pas
std::deque pour rien, par défaut, dans std::stack. La gestion de
mémoire sera plus efficace avec deque. Son seul défaut général par
rapport à vector est l'accès aux éléments qui est un peu moins
direct que pour vector, mais pour une pile, il n'y a d'accès qu'à
un élément qui est facile si on garde l'itérateur...
Dans news:cbcj6n$6r4$1@news-reader3.wanadoo.fr, Loïc
Franck Branjonneau wrote:
2/ Oui j'utilise des std::vector<> pour mes piles ; non pas des
std::deque<>. Et là je m'interroge. Le std::deque<> ne fait-il
pas une meilleure gestion de la mémoire que le std::vector<>
lors d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des
piles, vector me semble meilleur avec les cas d'utilisation
classiques.
Tu peux expliquer ? Parce que d'après moi, la norme ne choisit pas
std::deque pour rien, par défaut, dans std::stack. La gestion de
mémoire sera plus efficace avec deque. Son seul défaut général par
rapport à vector est l'accès aux éléments qui est un peu moins
direct que pour vector, mais pour une pile, il n'y a d'accès qu'à
un élément qui est facile si on garde l'itérateur...
Dans news:cbcj6n$6r4$, LoïcFranck Branjonneau wrote:2/ Oui j'utilise des std::vector<> pour mes piles ; non pas des
std::deque<>. Et là je m'interroge. Le std::deque<> ne fait-il
pas une meilleure gestion de la mémoire que le std::vector<>
lors d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des
piles, vector me semble meilleur avec les cas d'utilisation
classiques.
Tu peux expliquer ? Parce que d'après moi, la norme ne choisit pas
std::deque pour rien, par défaut, dans std::stack. La gestion de
mémoire sera plus efficace avec deque. Son seul défaut général par
rapport à vector est l'accès aux éléments qui est un peu moins
direct que pour vector, mais pour une pile, il n'y a d'accès qu'à
un élément qui est facile si on garde l'itérateur...
"Michel Michaud" writes:Dans news:cbcj6n$6r4$, LoïcFranck Branjonneau wrote:
2/ Oui j'utilise des std::vector<> pour mes piles ; non pas
des std::deque<>. Et là je m'interroge. Le std::deque<> ne
fait-il pas une meilleure gestion de la mémoire que le
std::vector<> lors d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des
piles, vector me semble meilleur avec les cas d'utilisation
classiques.
Tu peux expliquer ? Parce que d'après moi, la norme ne choisit
pas std::deque pour rien, par défaut, dans std::stack. La
gestion de mémoire sera plus efficace avec deque. Son seul
défaut général par rapport à vector est l'accès aux éléments
qui est un peu moins direct que pour vector,
C'est simple, j'ai implémenté un interpréteur de
mini-PostScript en forme de bibliothèque. PostScript est un
langage qui utilise abondamment la pile -- presque tout se
passe sur la pile. J'ai besoin d'indexer arbitrairement dans la
pile. Il n'y a aucune raison pour que cela coûte plus cher que
d'indexer dans un tableau.
"Michel Michaud" <mm@gdzid.com> writes:
Dans news:cbcj6n$6r4$1@news-reader3.wanadoo.fr, Loïc
Franck Branjonneau wrote:
2/ Oui j'utilise des std::vector<> pour mes piles ; non pas
des std::deque<>. Et là je m'interroge. Le std::deque<> ne
fait-il pas une meilleure gestion de la mémoire que le
std::vector<> lors d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des
piles, vector me semble meilleur avec les cas d'utilisation
classiques.
Tu peux expliquer ? Parce que d'après moi, la norme ne choisit
pas std::deque pour rien, par défaut, dans std::stack. La
gestion de mémoire sera plus efficace avec deque. Son seul
défaut général par rapport à vector est l'accès aux éléments
qui est un peu moins direct que pour vector,
C'est simple, j'ai implémenté un interpréteur de
mini-PostScript en forme de bibliothèque. PostScript est un
langage qui utilise abondamment la pile -- presque tout se
passe sur la pile. J'ai besoin d'indexer arbitrairement dans la
pile. Il n'y a aucune raison pour que cela coûte plus cher que
d'indexer dans un tableau.
"Michel Michaud" writes:Dans news:cbcj6n$6r4$, LoïcFranck Branjonneau wrote:
2/ Oui j'utilise des std::vector<> pour mes piles ; non pas
des std::deque<>. Et là je m'interroge. Le std::deque<> ne
fait-il pas une meilleure gestion de la mémoire que le
std::vector<> lors d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des
piles, vector me semble meilleur avec les cas d'utilisation
classiques.
Tu peux expliquer ? Parce que d'après moi, la norme ne choisit
pas std::deque pour rien, par défaut, dans std::stack. La
gestion de mémoire sera plus efficace avec deque. Son seul
défaut général par rapport à vector est l'accès aux éléments
qui est un peu moins direct que pour vector,
C'est simple, j'ai implémenté un interpréteur de
mini-PostScript en forme de bibliothèque. PostScript est un
langage qui utilise abondamment la pile -- presque tout se
passe sur la pile. J'ai besoin d'indexer arbitrairement dans la
pile. Il n'y a aucune raison pour que cela coûte plus cher que
d'indexer dans un tableau.
Dans news:, Gabriel Dos"Michel Michaud" writes:Dans news:cbcj6n$6r4$, LoïcFranck Branjonneau wrote:2/ Oui j'utilise des std::vector<> pour mes piles ; non pas des
std::deque<>. Et là je m'interroge. Le std::deque<> ne fait-il
pas une meilleure gestion de la mémoire que le std::vector<> lors
d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des piles,
vector me semble meilleur avec les cas d'utilisation classiques.
Tu peux expliquer ? Parce que d'après moi, la norme ne choisit pas
std::deque pour rien, par défaut, dans std::stack. La gestion de
mémoire sera plus efficace avec deque. Son seul défaut général par
rapport à vector est l'accès aux éléments qui est un peu moins
direct que pour vector,
C'est simple, j'ai implémenté un interpréteur de mini-PostScript en
forme de bibliothèque. PostScript est un langage qui utilise
abondamment la pile -- presque tout se passe sur la pile. J'ai
besoin d'indexer arbitrairement dans la pile. Il n'y a aucune raison
pour que cela coûte plus cher que d'indexer dans un tableau.
S'il faut « indexer » des éléments, alors pour moi ce n'est plus une
pile¹, même si tu peux aussi faire des opérations de type pile. Alors
oui, tu pourras utiliser vector directement pour ça. Ce n'est pas une
pile, mais c'est ce dont tu as besoin.
Dans news:m3k6xp46ux.fsf@merlin.cs.tamu.edu, Gabriel Dos
"Michel Michaud" <mm@gdzid.com> writes:
Dans news:cbcj6n$6r4$1@news-reader3.wanadoo.fr, Loïc
Franck Branjonneau wrote:
2/ Oui j'utilise des std::vector<> pour mes piles ; non pas des
std::deque<>. Et là je m'interroge. Le std::deque<> ne fait-il
pas une meilleure gestion de la mémoire que le std::vector<> lors
d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des piles,
vector me semble meilleur avec les cas d'utilisation classiques.
Tu peux expliquer ? Parce que d'après moi, la norme ne choisit pas
std::deque pour rien, par défaut, dans std::stack. La gestion de
mémoire sera plus efficace avec deque. Son seul défaut général par
rapport à vector est l'accès aux éléments qui est un peu moins
direct que pour vector,
C'est simple, j'ai implémenté un interpréteur de mini-PostScript en
forme de bibliothèque. PostScript est un langage qui utilise
abondamment la pile -- presque tout se passe sur la pile. J'ai
besoin d'indexer arbitrairement dans la pile. Il n'y a aucune raison
pour que cela coûte plus cher que d'indexer dans un tableau.
S'il faut « indexer » des éléments, alors pour moi ce n'est plus une
pile¹, même si tu peux aussi faire des opérations de type pile. Alors
oui, tu pourras utiliser vector directement pour ça. Ce n'est pas une
pile, mais c'est ce dont tu as besoin.
Dans news:, Gabriel Dos"Michel Michaud" writes:Dans news:cbcj6n$6r4$, LoïcFranck Branjonneau wrote:2/ Oui j'utilise des std::vector<> pour mes piles ; non pas des
std::deque<>. Et là je m'interroge. Le std::deque<> ne fait-il
pas une meilleure gestion de la mémoire que le std::vector<> lors
d'utilisations répétées de push()/pop() ?
Tu parlerais de queues, je serais d'accord, mais pour des piles,
vector me semble meilleur avec les cas d'utilisation classiques.
Tu peux expliquer ? Parce que d'après moi, la norme ne choisit pas
std::deque pour rien, par défaut, dans std::stack. La gestion de
mémoire sera plus efficace avec deque. Son seul défaut général par
rapport à vector est l'accès aux éléments qui est un peu moins
direct que pour vector,
C'est simple, j'ai implémenté un interpréteur de mini-PostScript en
forme de bibliothèque. PostScript est un langage qui utilise
abondamment la pile -- presque tout se passe sur la pile. J'ai
besoin d'indexer arbitrairement dans la pile. Il n'y a aucune raison
pour que cela coûte plus cher que d'indexer dans un tableau.
S'il faut « indexer » des éléments, alors pour moi ce n'est plus une
pile¹, même si tu peux aussi faire des opérations de type pile. Alors
oui, tu pourras utiliser vector directement pour ça. Ce n'est pas une
pile, mais c'est ce dont tu as besoin.
| Si je me souviens bien, Gabi a cité Postscript en exemple. C'est un
| langage postfixé, qui se sert logiquement d'une pile pour ces
| opérateurs. Formellement, la définition de l'opérateur d'addition serait
| quelque chose du genre, popper deux éléments du haut de la pile, puis en
| pusher leur somme, c-à-d :
|
| int tmp1 = pile.top() ;
| pile.pop() ;
| int tmp2 = pile.top() ;
| pile.pop() ;
| pile.push( tmp1, tmp2 ) ;
|
| Pratiquement, je crois que je préfèrerais une implémentation qui
| faisait :
|
| pile[ 1 ] = pile[ 0 ] + pile[ 1 ] ;
| pile.pop() ;
|
| si la pile le supportait. Mais ce n'est pas pour autant que je dirais
| que la structure en question n'est pas une pile.
Exactement. Et une définition de pile qui refuse l'ordre naturelle des
choses est inutile. Une pile a une histoire ; et c'est justement cette
histoire qui est intéressante.
-- Gaby
| Si je me souviens bien, Gabi a cité Postscript en exemple. C'est un
| langage postfixé, qui se sert logiquement d'une pile pour ces
| opérateurs. Formellement, la définition de l'opérateur d'addition serait
| quelque chose du genre, popper deux éléments du haut de la pile, puis en
| pusher leur somme, c-à-d :
|
| int tmp1 = pile.top() ;
| pile.pop() ;
| int tmp2 = pile.top() ;
| pile.pop() ;
| pile.push( tmp1, tmp2 ) ;
|
| Pratiquement, je crois que je préfèrerais une implémentation qui
| faisait :
|
| pile[ 1 ] = pile[ 0 ] + pile[ 1 ] ;
| pile.pop() ;
|
| si la pile le supportait. Mais ce n'est pas pour autant que je dirais
| que la structure en question n'est pas une pile.
Exactement. Et une définition de pile qui refuse l'ordre naturelle des
choses est inutile. Une pile a une histoire ; et c'est justement cette
histoire qui est intéressante.
-- Gaby
| Si je me souviens bien, Gabi a cité Postscript en exemple. C'est un
| langage postfixé, qui se sert logiquement d'une pile pour ces
| opérateurs. Formellement, la définition de l'opérateur d'addition serait
| quelque chose du genre, popper deux éléments du haut de la pile, puis en
| pusher leur somme, c-à-d :
|
| int tmp1 = pile.top() ;
| pile.pop() ;
| int tmp2 = pile.top() ;
| pile.pop() ;
| pile.push( tmp1, tmp2 ) ;
|
| Pratiquement, je crois que je préfèrerais une implémentation qui
| faisait :
|
| pile[ 1 ] = pile[ 0 ] + pile[ 1 ] ;
| pile.pop() ;
|
| si la pile le supportait. Mais ce n'est pas pour autant que je dirais
| que la structure en question n'est pas une pile.
Exactement. Et une définition de pile qui refuse l'ordre naturelle des
choses est inutile. Une pile a une histoire ; et c'est justement cette
histoire qui est intéressante.
-- Gaby
Exactement. Et une définition de pile qui refuse l'ordre naturelle des
choses est inutile. Une pile a une histoire ; et c'est justement cette
histoire qui est intéressante.
-- Gaby
Parfaitement avec tout ça.
Je n'utilise d'ailleur plus du tout std:stack, à chaque fois je me suis
retrouvé coincé en voulant faire une manip que ne supportait pas ce
conteneur.
Donc en général je me réimplémente ma propre pile en utilisant un autre
conteneur plus générique.
Je crois qu'une pile qui me permettrait d'accéder aux "n" derniers
éléments
(une sorte d'indexation spécialisée partant de la fin quoi) me suffisait,
mais ne pouvoir accéder qu'au "top" ca je ne peux pas m'en servir.
Exactement. Et une définition de pile qui refuse l'ordre naturelle des
choses est inutile. Une pile a une histoire ; et c'est justement cette
histoire qui est intéressante.
-- Gaby
Parfaitement avec tout ça.
Je n'utilise d'ailleur plus du tout std:stack, à chaque fois je me suis
retrouvé coincé en voulant faire une manip que ne supportait pas ce
conteneur.
Donc en général je me réimplémente ma propre pile en utilisant un autre
conteneur plus générique.
Je crois qu'une pile qui me permettrait d'accéder aux "n" derniers
éléments
(une sorte d'indexation spécialisée partant de la fin quoi) me suffisait,
mais ne pouvoir accéder qu'au "top" ca je ne peux pas m'en servir.
Exactement. Et une définition de pile qui refuse l'ordre naturelle des
choses est inutile. Une pile a une histoire ; et c'est justement cette
histoire qui est intéressante.
-- Gaby
Parfaitement avec tout ça.
Je n'utilise d'ailleur plus du tout std:stack, à chaque fois je me suis
retrouvé coincé en voulant faire une manip que ne supportait pas ce
conteneur.
Donc en général je me réimplémente ma propre pile en utilisant un autre
conteneur plus générique.
Je crois qu'une pile qui me permettrait d'accéder aux "n" derniers
éléments
(une sorte d'indexation spécialisée partant de la fin quoi) me suffisait,
mais ne pouvoir accéder qu'au "top" ca je ne peux pas m'en servir.