推荐使用std::vector的insert方法合并数组,如a.insert(a.end(), b.begin(), b.end());对于原生数组需动态分配内存并手动复制元素;std::array可借助std::copy合并,适用于固定大小场景。

在C++中合并两个数组有多种方法,具体选择取决于你使用的是原生数组(如int arr[])还是标准库容器(如std::vector)。下面介绍几种常见且实用的实现方式。
使用std::vector进行数组合并
推荐使用std::vector,因为它支持动态大小,并提供了方便的操作方法。
可以通过insert()函数将一个数组的所有元素添加到另一个数组末尾:
std::vector
std::vector
a.insert(a.end(), b.begin(), b.end()); // 将b合并到a后面
此时a包含{1,2,3,4,5,6}。这是最简洁安全的方法。
立即学习“C++免费学习笔记(深入)”;
合并原生C风格数组
如果必须使用普通数组(如int arr[10]),需要手动分配足够空间并逐个复制元素。
示例代码:
int a[] = {1, 2, 3};
int b[] = {4, 5, 6};
int len_a = 3, len_b = 3;
int* merged = new int[len_a + len_b]; // 动态分配内存
for (int i = 0; i
for (int i = 0; i
记得使用delete[] merged;释放内存,避免泄漏。
使用std::array(C++11及以上)
如果你希望保持固定大小且类型安全,可使用std::array。但因其大小固定,需预先定义目标数组长度。
示例:
std::array
std::array
std::array
std::copy(a.begin(), a.end(), result.begin());
std::copy(b.begin(), b.end(), result.begin() + a.size());
这里用std::copy完成数据搬运。
合并字符串数组或其他类型
上述方法适用于任意类型,包括double、std::string等。只要类型支持拷贝操作即可。
例如合并两个字符串数组:
std::vector<:string> v1 = {"hello"};
std::vector<:string> v2 = {"world"};
v1.insert(v1.end(), v2.begin(), v2.end()); // 得到{"hello", "world"}
基本上就这些常用方法。优先推荐使用std::vector配合insert,写法简单又不容易出错。











