下面是我所做的集合交集和并集测试的代码。我不明白为什么当我注释掉排序函数时输出不正确。为什么需要排序?或者我在这里遗漏了什么?
让程序员首先负责对输入进行排序的技术原因是什么?是为了保证排序不会进行两次(如果向量已经排序并且算法再次对其进行排序......)?
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void test_vector_union();
void test_vector_intesection();
int main(int i, char * args [])
{
cout <<endl<< "test union of unsorted vectors {1,4,3,2,0} and {6,10,2,1,4}" << endl;
test_vector_union();
cout <<endl<< "test intersection of unsorted vectors {1,4,3,2,0} and {6,10,2,1,4}" << endl;
test_vector_intesection();
return 0;
}
void test_vector_union(){
vector<int> x = {1,4,3,2,0};
vector<int> y= {6,10,2,1,4};
//sort(x.begin(),x.end()); sort(y.begin(),y.end());
vector<int> z ;
set_union(x.begin(),x.end(),y.begin(),y.end(),back_inserter(z));
for (int i:z)
cout << i <<",";
}
void test_vector_intesection(){
vector<int> x = {1,4,3,2,0};
vector<int> y= {6,10,2,1,4};
//sort(x.begin(),x.end()); sort(y.begin(),y.end());
vector<int> z ;
set_intersection(x.begin(),x.end(),y.begin(),y.end(),back_inserter(z));
for (int i:z)
cout << i <<",";
}