C++ 无法找到发生分段错误的位置
每当我遇到查询“Q”时,我应该打印堆栈的最大元素(这里使用vector来实现堆栈)。当我针对一些示例测试用例运行它时,它工作得很好,但每当我提交代码时,它就会给我错误 当查询为10时,将10添加到堆栈中, 当查询为R时,从堆栈中弹出元素, 当查询为Q时,打印堆栈中最大的元素C++ 无法找到发生分段错误的位置,c++,segmentation-fault,stack,C++,Segmentation Fault,Stack,每当我遇到查询“Q”时,我应该打印堆栈的最大元素(这里使用vector来实现堆栈)。当我针对一些示例测试用例运行它时,它工作得很好,但每当我提交代码时,它就会给我错误 当查询为10时,将10添加到堆栈中, 当查询为R时,从堆栈中弹出元素, 当查询为Q时,打印堆栈中最大的元素 #include <stdio.h> #include <bits/stdc++.h> #include <iostream> #include <vector> using
#include <stdio.h>
#include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int t=0;
cin>>t;
for(int x=0;x<t;x++){
printf("Case %d:\n",x+1);
int q=0;
cin>>q;
vector<int> myvec;
vector<int> trackvec;
int top=-1;
for(int i=0;i<q;i++){
string s;
cin>>s;
if(s=="A"){
int num=0;
cin>>num;
myvec.push_back(num);
if(i==0){trackvec.push_back(num);top++;}
else{
if(num>trackvec[top]){
trackvec.push_back(num);
top++;
}
else{
trackvec.push_back(trackvec[top]);
top++;
}
}
}
else if(s=="R"){
myvec.pop_back();
trackvec.pop_back();
top--;
}
else if(s=="Q" && top==-1){
cout<<"Empty"<<endl;
}
else if(s=="Q"){
cout<<trackvec[top]<<endl;
}
}
}
}
The trackvec here is to keep track of the largest element
Sample input:
2
7
A 10
A 5
Q
A 100
Q
R
Q
6
A 5
Q
R
Q
R
R
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
int t=0;
cin>>t;
对于(int x=0;x>q;
载体myvec;
向量trackvec;
int top=-1;
对于(int i=0;i>s;
如果(s==“A”){
int num=0;
cin>>num;
myvec.push_back(num);
如果(i==0){trackvec.push_back(num);top++}
否则{
如果(num>trackvec[top]){
trackvec.push_back(num);
top++;
}
否则{
trackvec.向后推(trackvec[top]);
top++;
}
}
}
否则,如果(s==“R”){
myvec.pop_back();
trackvec.pop_back();
顶部--;
}
否则如果(s==“Q”&&top==-1){
库特
我已经编辑了文章,您可以检查示例输入,但是代码对这些示例输入很有效
您的第一项任务应该是生成导致崩溃的输入。您对输入中有多少个A
s和R
s进行了哪些假设
以下是在我的系统上产生分段故障的输入:
1
2
R
Q
希望您现在能清楚地看到修复方法。这似乎是学习如何使用调试器的一个很好的时机。如果您在调试器中运行该程序,它将在发生崩溃时捕获崩溃,并让您检查调用堆栈以查看其发生在代码中的位置。您还将能够看到相关变量的值。欢迎使用!请ee和。你输入到你的程序中导致崩溃的确切输入是什么?天哪,没想到我会这么快收到回复,@Someprogrammerdude@ggorlen谢谢你的建议,我会检查它们的!@EmployedRussian我编辑了帖子,你可以检查示例输入,但代码对这些示例输入很有效。@a x表示添加integer x到列表中…R表示删除最后插入的元素,Q表示打印列表中当前最大的元素。在此之前,您应该已经看到了,非常感谢!