📅  最后修改于: 2023-12-03 14:39:52.007000             🧑  作者: Mango
在 C++ STL 中,merge()
是一个函数,它用于将两个已排序的序列合并成一个新的已排序序列。该函数定义在 <algorithm>
头文件中。
merge()
函数有以下原型:
template<class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator merge (InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result);
其中:
first1
:第一个已排序序列的起始位置;last1
:第一个已排序序列的截止位置;first2
:第二个已排序序列的起始位置;last2
:第二个已排序序列的截止位置;result
:合并后的新序列的起始位置。合并后的新序列是按升序排列的。
merge()
函数的主要功能是将上述两个已排序序列合并成一个新的已排序序列。如果 first1
到 last1
的元素列表中的所有值都小于 first2
到 last2
的元素列表中的所有值,那么合并后的序列将保持原来的两个序列的相对排序关系。
考虑以下示例代码,它演示了如何使用 merge()
将两个已排序序列合并成一个新序列:
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> v1{1, 5, 9};
std::vector<int> v2{2, 3, 6, 8};
std::vector<int> v3(v1.size() + v2.size());
// 合并 v1 和 v2,将结果写入 v3 中
std::merge(std::begin(v1), std::end(v1),
std::begin(v2), std::end(v2),
std::begin(v3));
// 打印 v3 中的元素
for (const auto& i : v3) {
std::cout << i << " ";
}
return 0;
}
运行以上代码的输出将是:
1 2 3 5 6 8 9
merge()
函数。