C++ 使用vector编写的程序循环运行后控制台无输出问题排查
问题原因分析
- 核心原因是vector越界访问触发未定义行为,导致程序运行过程中直接崩溃,无法执行到cout打印语句:
C++中vector的下标索引合法范围为[0, 容器大小-1],你在两层for循环的终止条件中都错误使用了<=busStation.size():传入的测试用例vector大小为4,合法索引是0/1/2/3,当循环变量i=4时,访问busStation[i]已经越界,程序直接终止,不会返回结果也不会打印内容。
修复方案
将两层循环的终止条件修改为<busStation.size()即可解决无输出的问题,修改后的函数代码如下:
int busRemaining(vector<vector<int>> &busStation) { int answer=0; // 把<=改成< for(int i=0; i < busStation.size(); i++) { for(int j=i+1; j < busStation.size(); j++) { if((busStation[i][0] <= busStation[j][0]) && (busStation[i][1] >= busStation[j][0])) { answer++; } } } return answer; }
修改后运行测试用例即可正常输出结果,你可以根据题目的实际要求再调整逻辑判断部分的代码。
内容的提问来源于stack exchange,提问作者Hitesh Patil
相关产品推荐
相关产品推荐

