📅  最后修改于: 2023-12-03 15:38:31.322000             🧑  作者: Mango
在C++中,使用STL(Standard Template Library)可以方便地处理数组和其他数据结构。连接两个数组是一个常见的操作,下面介绍如何使用STL实现。
一种简单的方法是使用STL vector。vector是一个动态数组,可以在运行时确定大小并添加和删除元素。我们可以先把两个数组转换成vector,然后将它们合并到一个新vector中。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int arr1[] = {1, 2, 3};
int arr2[] = {4, 5, 6};
vector<int> vec1(arr1, arr1 + sizeof(arr1) / sizeof(int));
vector<int> vec2(arr2, arr2 + sizeof(arr2) / sizeof(int));
vector<int> merged;
merged.reserve(vec1.size() + vec2.size());
merged.insert(merged.end(), vec1.begin(), vec1.end());
merged.insert(merged.end(), vec2.begin(), vec2.end());
for (int i = 0; i < merged.size(); i++) {
cout << merged[i] << " ";
}
return 0;
}
上面的代码首先将两个数组转换为vector,并创建一个新的空vector。由于vector的大小可以在运行时确定,我们可以先分配空间,以便在插入元素时不会多次调整大小。然后,我们使用insert函数将两个vector中的元素插入到新vector中。最后,我们遍历新vector并输出每个元素。
输出结果为:1 2 3 4 5 6
另一种方法是使用STL的algorithm库。我们可以使用copy函数将两个数组中的元素复制到一个新数组中。然后,我们可以遍历新数组并输出每个元素。
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr1[] = {1, 2, 3};
int arr2[] = {4, 5, 6};
int merged[sizeof(arr1) / sizeof(int) + sizeof(arr2) / sizeof(int)];
copy(arr1, arr1 + sizeof(arr1) / sizeof(int), merged);
copy(arr2, arr2 + sizeof(arr2) / sizeof(int), merged + sizeof(arr1) / sizeof(int));
for (int i = 0; i < sizeof(merged) / sizeof(int); i++) {
cout << merged[i] << " ";
}
return 0;
}
上面的代码首先创建一个新数组,该数组的大小等于两个原始数组的大小之和。然后,我们使用copy函数将两个数组中的元素复制到新数组中。其中,第一个参数是源数组的起始地址,第二个参数是源数组的结束地址,第三个参数是目标数组的起始地址。接下来,我们遍历新数组并输出每个元素。
输出结果为:1 2 3 4 5 6
以上介绍了两种使用STL连接两个数组的方法。第一种方法使用vector,可以动态地创建和管理数组,并且插入操作比较方便。第二种方法使用algorithm库,需要先创建一个常规数组,但是实现起来更简单。根据具体情况选择不同的方法即可。