📜  如何在C++中使用STL连接两个数组?(1)

📅  最后修改于: 2023-12-03 15:38:31.322000             🧑  作者: Mango

如何在C++中使用STL连接两个数组?

在C++中,使用STL(Standard Template Library)可以方便地处理数组和其他数据结构。连接两个数组是一个常见的操作,下面介绍如何使用STL实现。

利用vector

一种简单的方法是使用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

利用algorithm库

另一种方法是使用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库,需要先创建一个常规数组,但是实现起来更简单。根据具体情况选择不同的方法即可。