📜  C++ STL-algorithm.merge()函数(1)

📅  最后修改于: 2023-12-03 14:39:50.619000             🧑  作者: Mango

C++ STL-algorithm.merge()函数

merge()函数是C++ STL的一个算法,它用于将两个已排序的序列(可以是数组、vector等)合并成一个新的已排序的序列。同时该函数不会删除原有序列中的元素,其返回值是一个合并后的新序列。

语法:

template <class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator merge (InputIterator1 first1, InputIterator1 last1,
                      InputIterator2 first2, InputIterator2 last2,
                      OutputIterator result);

函数参数:

  • first1last1分别是第一个序列的起始位置和终止位置。
  • first2last2分别是第二个序列的起始位置和终止位置。
  • result是存储合并后序列的目标位置。

注意:由于merge()函数会将两个序列合并并返回一个新序列,因此,我们需要提供一个目标容器以存储合并后的序列。

下面是使用merge()函数将两个已排序序列合并的示例:

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    vector<int> v1 = { 1, 2, 3, 4, 5 }; // 第一个有序序列
    vector<int> v2 = { 2, 4, 6, 8 }; // 第二个有序序列

    vector<int> v3(v1.size() + v2.size()); // 创建目标容器

    merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin()); // 将v1和v2合并到v3中

    for (int i : v3) cout << i << " "; // 输出合并后的序列
    return 0;
}

输出结果:

1 2 2 3 4 4 5 6 8

另外,merge()函数还支持自定义比较函数进行排序,具体用法可以参考C++ STL中sort()函数的使用。