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

C++用vector实现插入排序打印前10个元素报参数无效异常如何解决

报错原因
  • 循环首次执行时j=0,list.begin()与list.begin()+0是相同迭代器,构造出的arr是空vector,调用arr.front()访问空容器的首元素属于非法操作,直接触发参数错误异常。
  • 当前逻辑也不符合打印前10个元素的需求:你构造的arr是原vector的前j个元素,取front()只会每次输出原vector的第一个元素,最终会重复打印10次第一个值。
修复方案

完全不需要额外构造子vector,直接遍历原vector的前10个下标即可,修改打印部分的循环代码:

cout << "first 10 value in list is:";
// 额外增加j < list.size()判断,避免size小于10时出现越界访问
for (int j = 0; j < 10 && j < list.size(); j++) { 
    cout << list[j] << ", "; 
}

如果确实需要通过构造子vector的方式实现,可修改为:

for (int j = 0; j < 10 && j < list.size(); j++) { 
    vector<int> arr(list.begin() + j, list.begin() + j + 1);
    cout << arr.front() << ", "; 
}

但该方案存在大量无意义的vector构造销毁开销,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:39:00