// Example presented by  Divakar Viswanath for CS116
// winter 2000

#include <iostream>
#include <vector>
#include <set>
#include <algorithm>

main(){

    //Basic set operations.
    int iarr1[] = {1,2,3,5,8,13,21};
    int iarr2[] = {2,4,6,8,10,12,14,16,18,20};

    vector<int> ivec1(iarr1,iarr1+sizeof(iarr1)/sizeof(int));
    vector<int> ivec2(iarr2,iarr2+sizeof(iarr2)/sizeof(int));

    vector<int> res;

    set_union(ivec1.begin(), ivec1.end(), 
	      ivec2.begin(), ivec2.end(),
	      inserter(res, res.begin())); //watch the syntax
    
    cout<<"The union is: "<<endl;
    for(int i=0; i < res.size(); i++)
	cout<<res[i]<<" ";
    cout<<endl<<endl;

    res.resize(0);
    set_intersection(ivec1.begin(), ivec1.end(),
		     ivec2.begin(), ivec2.end(),
		     inserter(res,res.begin())); //same syntax

    cout<<"The Intersection is:"<<endl;
    for(int i=0; i<res.size(); i++)
	cout<<res[i]<<" ";
    cout<<endl<<endl;


    res.resize(0);
    set_symmetric_difference(ivec1.begin(), ivec1.end(),
			     ivec2.begin(), ivec2.end(),
			     inserter(res,res.begin())); //same syntax

    cout<<"The symm diff is:"<<endl;
    for(int i=0; i<res.size(); i++)
	cout<<res[i]<<" ";
    cout<<endl<<endl;
}
/*
The union is: 
1 2 3 4 5 6 8 10 12 13 14 16 18 20 21 

The Intersection is:
2 8 

The symm diff is:
1 3 4 5 6 10 12 13 14 16 18 20 21 
*/
