C++ 算法 merge() 函数
定义和用法
merge()
函数将两个数据范围的值合并复制到目标数据范围中。
目标数据范围需要足够大以容纳两个源数据范围的所有元素。
如果两个源数据范围是有序的,合并后的目标数据范围也将保持有序。
数据范围通过迭代器指定。
实例
合并两个 vector:
vector<int> numbers1 = {1, 4, 9, 16}; vector<int> numbers2 = {2, 4, 6, 8}; vector<int> merged(8); // 预分配足够空间 merge(numbers1.begin(), numbers1.end(), numbers2.begin(), numbers2.end(), merged.begin()); for (int item : merged) { cout << item << " "; // 输出:1 2 4 4 6 8 9 16 }
语法
merge(iterator start1, iterator end1, iterator start2, iterator end2, iterator destination);
参数
参数 | 描述 |
---|---|
start1 | 必需。指向第一个数据范围起始位置的迭代器。 |
end1 |
必需。指向第一个数据范围结束位置的迭代器。 将合并到该位置之前的元素。 |
start2 | 必需。指向第二个数据范围起始位置的迭代器。 |
end2 |
必需。指向第二个数据范围结束位置的迭代器。 将合并到该位置之前的元素。 |
destination | 必需。指向目标数据范围起始位置的迭代器。 |
技术细节
返回: | 指向合并后数据范围末尾的迭代器(最后一个被写入元素的下一个位置)。 |
---|
说明:
- 该函数时间复杂度为 O(n+m),其中 n 和 m 分别是两个源数据范围的大小
- 合并前不需要对目标数据范围进行初始化
- 若输入范围有序,结果将保持有序;若输入无序,结果也将是无序的合并
相关页面
教程:C++ 数据结构
教程:C++ 迭代器
教程:C++ 算法