In: Computer Science
Assume we have two sequences of values S1 containing 1, 5, 3, 6, 7, 8 while S2 containing 2, 5, 6, 9, 7. We store these two sequences as sets and perform a set intersection and set difference. Write C++ code to do that respectively.
C++ Program:
#include <iostream>
#include <set>
#include <iterator>
using namespace std;
int main()
{
// empty set containers
set <int, greater <int> >
set1;
set <int, greater <int> > set2;
set <int, greater <int> >
setintersection;
set <int, greater <int> >
setdifference;
// inserting elements into set1
set1.insert(1);
set1.insert(5);
set1.insert(3);
set1.insert(6);
set1.insert(7);
set1.insert(8);
// inserting elements into set2
set2.insert(2);
set2.insert(5);
set2.insert(6);
set2.insert(9);
set2.insert(7);
//Set intersection of two sets give a set
//with the elements present in both sets
//Finding set intersection
set <int, greater <int> > :: iterator
itr1;
for (itr1 = set1.begin(); itr1 != set1.end();
++itr1)
{
set <int, greater <int>
> :: iterator itr2;
for(itr2 = set2.begin(); itr2 !=
set2.end(); ++itr2)
{
//Find a match, add it to
intersection set
if(*itr1 == *itr2)
setintersection.insert(*itr1);
}
}
// printing set intersection
set <int, greater <int> > :: iterator
itr3;
cout << "\nThe set intersection is : ";
for (itr3 = setintersection.begin(); itr3 !=
setintersection.end(); ++itr3)
{
cout << *itr3 <<
'\t';
}
cout << endl;
//Set Difference of two sets gives a set
//with elements present in first set and not present
in second set
//Finding set difference
set <int, greater <int> > :: iterator
itr4;
for (itr4 = set1.begin(); itr4 != set1.end();
++itr4)
{
int flag=0;
set <int, greater <int>
> :: iterator itr2;
for(itr2 = set2.begin(); itr2 !=
set2.end(); ++itr2)
{
if(*itr4 == *itr2){
flag=1;
itr2=set2.end();
}
}
//Not find a match, add it to
difference set
if(flag==0)
setdifference.insert(*itr4);
}
// printing set difference
set <int, greater <int> > :: iterator
itr5;
cout << "\nThe set difference is : ";
for (itr5 = setdifference.begin(); itr5 !=
setdifference.end(); ++itr5)
{
cout << *itr5 <<
'\t';
}
cout << endl;
return 0;
}
Code Screenshots:
Output Screenshot: