C ++无法在堆栈中使用peek()函数

时间:2012-03-30 21:16:23

标签: c++ stack peek

我正在尝试将Visual Studio 2010中的peek函数与这些库一起使用:

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

但是,我不能在堆栈中使用peek函数:

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();
        }
    }
}

我收到错误:

  

错误1错误C2039:'peek':不是'std :: stack&lt; _Ty&gt;'

的成员

我做错了什么?

4 个答案:

答案 0 :(得分:6)

我想你想用

s.top();

而不是峰值。

答案 1 :(得分:5)

peek中没有std::stack功能。

您在寻找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();
        }
    }
}

答案 2 :(得分:2)

std :: stack中没有peek函数。有关参考,请参阅stack

看起来好像您正在使用top那样的功能。如需参考,请查看this reference

答案 3 :(得分:1)

您的代码有stack,但您实际上想要使用Stack。他们是两个不同的东西。