首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

merge算法有关问题

2013-12-02 
merge算法问题#define _SCL_SECURE_NO_WARNINGS#includeiostream#includevector#includealgorithmus

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插入。

热点排行