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

如何在数组末尾按指定次数添加元素及对应C++代码错误排查

问题排查
  • 循环次数逻辑错误:你当前设置的循环终止条件是i < n+k,这会导致向数组末尾添加n+k次目标元素,而非要求的k次。比如示例中n=2、k=5时,会循环7次添加10,最终数组长度变成2+7=9,和期望的2+5=7不符。
  • 存在冗余操作:不需要循环调用resize,resize方法本身就支持直接指定调整后的容器大小,第二个参数就是新扩容位置的默认填充值,单次调用即可完成k次元素添加,比循环操作效率更高。
正确实现方案

推荐直接使用resize的原生扩容能力实现需求,代码如下:

#include <iostream>
#include <vector>
using namespace std;
 
int main() {
    int n;
    cin >> n;
    vector<int> arr(n);
    for (int i = 0; i < n; i++)
        cin >> arr[i];
    int x, k;
    cin >> x >> k;
    // 单次resize直接扩容k个位置,所有新增位置填充x
    arr.resize(arr.size() + k, x);
    for (int i = 0; i < arr.size(); i++)
        cout << arr[i] << " ";
    return 0;
}

如果更习惯循环添加的写法,也可以修改循环次数+使用push_back实现:

// 替换原有resize循环的替代写法
for (int i = 0; i < k; i++) {
    arr.push_back(x);
}

测试示例输入时,输入2、-1 2、10 5即可得到期望输出-1 2 10 10 10 10 10 。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:45:00