3 votes

C++ incapable d'utiliser la fonction peek() dans la pile

J'essaie d'utiliser le peek dans Visual Studio 2010 avec ces bibliothèques :

#include "stdafx.h"
#include <string>
#include <string.h>
#include <fstream>
#include <iostream>
#include <string.h>
#include <vector>
#include <stack>

Cependant, je ne peux pas utiliser le peek dans la pile :

void dfs(){
    stack<Node> s;
    s.push(nodeArr[root]);
    nodeArr[root].setVisited();
    nodeArr[root].print();
    while(!s.empty()){
        //peek yok?!
        Node n=s.peek();        
        if(!n.below->isVisited()){
            n.below->setVisited();
            n.below->print();
            s.push(*n.below);
        }
        else{
            s.pop();
        }
    }
}

Je reçois l'erreur :

Erreur 1 erreur C2039 : 'peek' : n'est pas un membre de 'std::stack<_Ty>'.

Qu'est-ce que je fais de mal ?

6voto

Jarosław Gomułka Points 2084

Je pense que vous voulez utiliser

s.top();

au lieu de pic.

5voto

Luchian Grigore Points 136646

Il n'y a pas peek fonction dans std::stack .

Vous êtes à la recherche de top() ?

void dfs(){
    stack<Node> s;
    s.push(nodeArr[root]);
    nodeArr[root].setVisited();
    nodeArr[root].print();
    while(!s.empty()){
        //peek yok?!
        Node n=s.top();   // <-- top here
        if(!n.below->isVisited()){
            n.below->setVisited();
            n.below->print();
            s.push(*n.below);
        }
        else{
            s.pop();
        }
    }
}

2voto

josephthomas Points 2404

Il n'y a pas peek dans std::stack. Pour une référence, veuillez consulter pile

Il semble que vous utilisiez la fonctionnalité comme top serait. Pour une référence sur le dessus, jetez un coup d'oeil à cette référence .

1voto

TJD Points 7208

Votre code a stack mais vous vouliez en fait utiliser Stack . Ce sont deux choses différentes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X