📅  最后修改于: 2023-12-03 14:39:50.619000             🧑  作者: Mango
merge()
函数是C++ STL的一个算法,它用于将两个已排序的序列(可以是数组、vector等)合并成一个新的已排序的序列。同时该函数不会删除原有序列中的元素,其返回值是一个合并后的新序列。
语法:
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()函数会将两个序列合并并返回一个新序列,因此,我们需要提供一个目标容器以存储合并后的序列。
下面是使用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()函数的使用。