Petit probleme: PILE et Pointeur C++

Fermé
TB - 1 mai 2008 à 15:32
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 - 1 mai 2008 à 18:12
Bonjour,

J'ai déclaré une pile d'objet CLIENT : stack<Client> p;
D'autre part, j'ai un tableau de pointeur vers des clients: CLIENT** table;

Comment je pointe une case du tableau sur la tete de la pile ???

J'ai essayé table[0] = p;

Il me lance une erreur d'incompatibilité;
cannot convert `std::stack<Client, std::deque<Client, std::allocator<Client> > >' to `Client*' in assignment

Merci d'avance

5 réponses

Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
1 mai 2008 à 16:47
Bonjour,

C'est possible de voir le sommet de la pile via la méthode top mais pas le reste des éléments.

Si seule la tête de pile t'intéresse :
table[0] = &p.top();


Dans le cas contraire je considérerais l'utilisation d'un vecteur (vector) plutôt. On peut en tirer un fonctionnement similaire grace à push_back et pop_back, mais également un accès (mémoire indirect, c'est un tableau dynamique) à chaque élément via la méthode "at" ou l'opérateur "[indice de l'élément]"

Le tableau de pointeurs peut aussi être un vecteur si sa taille peut varier au cours du temps.

M.
0
Merci pour les informations, je vais essayer d'utiliser : table[0] = &p.top();

Est ce possible de supprimer un élément de la pile p tout en conservant les éléments qui le précèdent?
0
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
1 mai 2008 à 17:43
La question dépend de qui est ta référence, est-ce le sommet ou la base de la pile...

La pile C++ est comme les tubes dans lesquels on range les balles de tennis.

On peut voir la balle du dessus, on peut la prendre et on peut mettre une autre balle par au dessus. (On peut quand même savoir le nombre de balles aussi)

Ce sont les trois actions possibles.

J'espère que cela répond à ta question.

M.
0
Merci bien

j'ai bien compris , je pensais qu'il était possible d'acceder au éléments suivants comme en C. (element->suivant)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
1 mai 2008 à 18:12
Non, une pile le permet rarement.

Il faut plutôt chercher dans d'autres types de conteneurs C++ pour avoir ces fonctionnalités. Je pense principalement au "vector", à la "queue" et à la "deque".

M.
0