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

合并两个vector遇问题:现有代码无输出,求排查及正确代码

问题排查与正确代码

你的代码核心问题是:空vector直接用下标赋值会触发未定义行为。v3默认初始化后是空的,没有分配任何内存空间,你用v3[i]去赋值时,访问的是不存在的内存位置,程序要么崩溃,要么没有输出。

下面是几种正确的实现方式:

方法1:先分配空间再赋值

先给v3分配足够容纳v1和v2所有元素的空间,再通过下标赋值:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int> v1={1,2,4,5};
    vector<int> v2={10,9,6,3};
    // 提前分配足够空间
    vector<int> v3(v1.size() + v2.size());
    int i=0;
    for(int value1:v1)
    {
        v3[i]=value1;
        i++;
    }
    for(int value2:v2)
    {
        v3[i]=value2;
        i++;
    }
    for(int value3:v3)
    {
        cout<<value3<<" ";
    }
}

方法2:用push_back直接添加元素(最省心)

不需要手动管理下标,直接把元素逐个添加到v3末尾:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int> v1={1,2,4,5};
    vector<int> v2={10,9,6,3};
    vector<int> v3;
    // 预留空间可以提升效率(可选)
    v3.reserve(v1.size() + v2.size());
    for(int value1:v1)
    {
        v3.push_back(value1);
    }
    for(int value2:v2)
    {
        v3.push_back(value2);
    }
    for(int value3:v3)
    {
        cout<<value3<<" ";
    }
}

方法3:用insert成员函数(一行合并)

利用vector的insert方法直接批量插入元素,代码更简洁:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int> v1={1,2,4,5};
    vector<int> v2={10,9,6,3};
    vector<int> v3 = v1;
    // 把v2的所有元素插入到v3末尾
    v3.insert(v3.end(), v2.begin(), v2.end());
    for(int value3:v3)
    {
        cout<<value3<<" ";
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:52:13