//不带谓词 templateinline _OutIt merge(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest) //带谓词 template inline _OutIt merge(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest, _Pr _Pred)
first1 last1 第一个容器的首、尾迭代器
first2 last2 第二个容器的首、尾迭代器
dest 输出容器迭代器
备注:这 2 个有序序列的排序规则相同(要么都是升序,要么都是降序)
#include#include #include #include #include #include int main() { std::vector a{1, 2, 4, 5, 8, 10}; std::vector b{1, 2, 3, 4}; std::vector c; std::merge(std::begin(a), std::end(a), std::begin(b), std::end(b), std::back_inserter(c)); std::for_each(std::begin(c), std::end(c), [](int value) { std::cout << value << ", "; }); std::cout << std::endl; //1-2 std::vector e{ 3, 2, 5, 7 }; std::vector d; std::sort(std::begin(e), std::end(e), std::less ()); //必须排序,否则报错 merge(std::begin(a), std::end(a), std::begin(e), std::end(e), std::back_inserter(d)); std::for_each(std::begin(d), std::end(d), [](int value) { std::cout << value << ", "; }); std::cout << std::endl; return -1; } //输出 1, 1, 2, 2, 3, 4, 4, 5, 8, 10, 1, 2, 2, 3, 4, 5, 5, 7, 8, 10,
b容器未排序



