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

C++使用vector实现可变长度数组查询时输出错误问题求助

代码错误分析

核心问题

你的代码问题出在sub_vector未在每次处理新子数组前清空,导致前序子数组的元素会累积到后续子数组中,最终查询结果不符合预期。

具体错误流程

  • 处理第一个子数组时,sub_vector存入元素[1,5,4],成功加入main_vector,此时main_vector[0] = [1,5,4],匹配预期
  • 处理第二个子数组时,你没有清空sub_vector中的旧元素,直接追加新输入的元素,最终sub_vector变为[1,5,4,1,2,8,9,3],加入main_vector后main_vector[1]的值和预期的[1,2,8,9,3]完全不符
  • 执行查询1 3时,取到的是main_vector[1][3],对应值为1,和你实际输出的结果一致。

修复方案

你只需要在每次循环处理新子数组前,清空sub_vector即可,修改后的循环代码如下:

for(int x = 0; x < n; x++)
{
    sub_vector.clear(); // 新增该行,清空上一轮子数组的残留元素
    cin >> length_of_sub_vector;
    for(;length_of_sub_vector > 0; length_of_sub_vector--)
    {
        cin >> input_element;
        sub_vector.push_back(input_element);
    }
    main_vector.push_back(sub_vector);
}

你也可以选择将sub_vector的声明移动到循环内部,每次循环新建空的子数组,效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:15:02