You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++程序选中p选项打印vector内容时异常终止,是什么原因?

错误原因分析

你的程序终止是因为触发了vector的越界访问异常,两处循环逻辑都有问题:

1. while循环条件逻辑错误

你写的判断条件while (i <= numbers.at(i))完全不符合遍历需求:

  • numbers.at(i)取的是vector中第i位存储的元素值,不是vector的元素总数。如果你的vector长度远小于元素值,i会不断自增直到超出vector的合法索引范围。
  • std::vector::at()会做严格的边界检查,一旦访问的索引超出[0, 容器长度-1]的合法范围,就会抛出std::out_of_range异常,未捕获的异常会直接导致程序终止。
  • 正确的遍历判断条件应为i < numbers.size()。

2. 注释的for循环存在边界错误

你注释的for循环条件i <= numbers.size()同样会触发越界:

  • vector的最大合法索引是numbers.size() - 1,当i等于numbers.size()时,numbers.at(i)同样会抛出越界异常。
  • 正确的for循环条件应为i < numbers.size()。

修正后的遍历代码
cout << "[ ";
// 两种写法选一种即可
// 写法1:while循环
int i = 0;
while (i < numbers.size())
{
    cout << numbers.at(i) << ' ';
    i++;
}
// 写法2:for循环
// for (int i = 0; i < numbers.size(); i++)
//     cout << numbers.at(i) << ' ';
cout << "]" << endl;

内容的提问来源于stack exchange,提问作者K3nNyTheOne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 10:21:02