PART1
typedef long long ll;
struct forloop {
char val, lim;
int dep;
};
vector<forloop> loop;
PART2
int main() {
//read
memset(tp, 0, sizeof tp);
loop.clear();
string str;
while (getline(cin, str)) {
int st = 0;
while (str[st] <= 32) st ++;
while (!loop.empty() && loop.back().dep >= st / 4) loop.pop_back();
if (str[st] == 'f') { //for loop
char val, lim;
string tmp = str.substr(st, 20);
sscanf(tmp.c_str(), "for %c in range(%c):", &val, &lim);
**loop.push_back((forloop){val,lim,st/4});**
}else { //lag
doit();
}
}
out();
return 0;
}
在“loop.push_back((forloop){val,lim,st / 4})之后;”我得到了分段错误:11
有谁知道为什么? 谢谢!
答案 0 :(得分:0)
如果对push_back的调用导致了问题,那么由于你推回了太多元素,你可能会内存不足。计算向量中的元素数量,以确定您没有意外创建过多的元素。
我想知道你最后的评论中“后”的意思。你的意思是它可能发生在doit()函数中吗?