对于两个有序的元素序列,在归并操作中作适当的处理即可得到二者的交集与并集,代码如下:
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
using namespace std;
void vectorjiaoji(const vector<int>& v1,const vector<int>& v2,vector<int>& des)//求交集
{
int i,j;
i = j = 0;//定位到2个有序向量的头部
des.clear();
while(i < v1.size() && j < v2.size())
{
if(v1[i] == v2[j]) //相等则为交集的元素之一
{
des.push_back(v1[i]);
i += 1;
j += 1;
}
else if(v1[i] < v2[j]) //不相等时,指示较小元素额标记加一
{
i += 1;
}
else
{
j += 1;
}
}
}
void vectorbingji(const vector<int>& v1,const vector