合并操作会合并两个有相同顺序的序列中的元素,可以是两个升序序列,也可以是两个降序序列。结果会产生一个包含来自这两个输入序列的元素副本的序列,并且排序方式和原始序列相同。图 1 说明了其工作方式。
![](https://i-blog.csdnimg.cn/blog_migrate/74f1d66f4af26e63b30a12459a06d7c6.jpeg)
merge() 算法会合并两个序列并将结果保存到第三个序列中,它使用 < 运算符来比较元素。图 1 表明合并操作被运用到 these 和 those 容器的内容上,结果序列保存在 both 容器中。
merge() 算法需要 5 个参数。其中前两个指定第一个输入序列的迭代器,在这个示例中是 these,后面两个迭代器指定第二个输入序列,在这个示例中是 those,最后一个参数是一个指定合并元素存放位置的迭代器,即 both 容器。用来指定输入序列的迭代器只需要是最低层次的迭代器,用来保存合并结果的迭代器需要是一个输出迭代器。
merge() 算法并没有关于被合并序列容器的信息,所以它们不能创建元素,只能用提供的作为第 5 个参数的迭代器来保存元素。因而在这个示例中,目的序列中的元素必须是已经存在的。在图 1 中,通过以两个输入容器元素个数之和为指定的元素个数创建一个 both 容器来保证此要求。创建的结果序列可以放在任何位置ÿ