📅  最后修改于: 2023-12-03 14:51:14.737000             🧑  作者: Mango
在C++ STL中,std::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
:存储合并后序列的目标位置。返回值:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> vec1 = {1, 3, 5};
vector<int> vec2 = {2, 4, 6};
vector<int> result(6);
merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), result.begin());
for (auto i : result)
{
cout << i << " ";
}
return 0;
}
输出结果:
1 2 3 4 5 6
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> vec1 = {1, 3, 5};
vector<int> vec2 = {2, 4, 6};
vector<int> result;
merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), back_inserter(result));
for (auto i : result)
{
cout << i << " ";
}
return 0;
}
输出结果:
1 2 3 4 5 6
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> vec1 = {1, 3, 5, 5};
vector<int> vec2 = {2, 4, 6, 6};
vector<int> result(8);
auto end = merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), result.begin());
end = unique(result.begin(), end);
for (auto iter = result.begin(); iter != end; ++iter)
{
cout << *iter << " ";
}
return 0;
}
输出结果:
1 2 3 4 5 6