我正在尝试将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;'
的成员
我做错了什么?
答案 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
。他们是两个不同的东西。