gpt4 book ai didi

algorithm - 堆栈遍历

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:11 25 4
gpt4 key购买 nike

我在为 dfs 编写代码时遇到以下错误:

dfs.cpp: In function ‘void dfs(int, std::vector<std::vector<int> >&)’:
dfs.cpp:92:1: error: ‘class std::stack<int>’ has no member named ‘begin’
dfs.cpp:92:1: error: ‘class std::stack<int>’ has no member named ‘end’
dfs.cpp:92:1: error: ‘class std::stack<int>’ has no member named ‘begin’
dfs.cpp:92:1: error: template argument 1 is invalid

我想遍历堆栈,当我使用迭代器以正常方式使用它时,它会出现上述错误。有人可以帮我吗。在 STL 中。

#define MAX 100
#define FIT(it,v) for (typeof(v.begin()) it = v.begin(); it != v.end(); it++)
bool visit[MAX];
void dfs(int start,vector< vector<int> >&v){
stack<int> S;
S.push(start);
while(S.empty()==false){
cout<<"stack:";
FIT(it,S)cout<<*it<<" ";
cout<<"\n";
int node=S.top();
S.pop();
cout<<node<<" ";
visit[node]=true;
FOR(i,0,sz(v[node])){
if(!visit[v[node][i]])S.push(v[node][i]);
}
}
return;
}

int main(){
printf("here is dfs\n");
printf("enter number of vertices\n");
int n=SI;
vector< vector<int> > v(n);
printf("enter number of edges\n");
int m=SI;
FOR(i,0,m){int a=SI,b=SI;v[a].pb(b);v[b].pb(a);}
FOR(i,0,n)if(!visit[i]){dfs(i,v);cout<<"\n";}
cout<<"\n";
return 0;
}

最佳答案

堆栈没有迭代器。使用向量并将 push_back 替换为 push 并将 pop_back 替换为 pop 并将 back 替换为顶部

关于algorithm - 堆栈遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16844623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com