merge算法有关问题

merge算法问题
#define _SCL_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{

int arr1[] = {1,2,99,4,5};
int arr2[] = {6,7,8,9,10};
vector<int> vec1(arr1, arr1 +2);
vector<int> vec2(arr2, arr2 + 2);
vector<int> vec3;

sort(vec1.begin(), vec1.end());
sort(vec2.begin(), vec2.end());
merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), vec3);

/*int arr3[10];
merge(arr1, arr1 + 5, arr2, arr2 + 5, arr3);*/
}


这个merge不能对vector和list进行合并吗?
merge

------解决方案--------------------
算法如果操作容器要调用下迭代器适配器吧好像
merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), back_inserter(vec3));

------解决方案--------------------
引用:
Quote: 引用:

不行,list是双向迭代器,标准算法里的merge采用的是随机迭代器。list只能用自己单独实现的merge排序。

那vector呢?

vector、string、deque都是随机访问迭代器,可以直接用通用的排序算法。

不过你这里有点小问题,因为vec3是空的,所以要用back_inserter插入。