Y
Yuri CHUANG
This is a example from a textbook,but there are some strange error that
I don't understand.Could anyone give me some help to realize the
operations on set.Thank you very much
(I compile it with Dev C++ 4.9.9.2)
#include<iostream>
#include<set>
#include<string>
#include <algorithm>
using namespace std;
typedef set<string> Set;
typedef Set::iterator It;
void print(Set);
Set operator + (Set&,Set&);
Set operator * (Set&,Set&);
Set operator - (Set&,Set&);
int main(void)
{
string str1[]={"A","B","C","D","E","F","G"};
string str2[]={"A","E","I","O","U"};
Set s1(str1,str1+7);
Set s2(str2,str2+5);
print(s1);
print(s2);
print(s1+s2);
print(s1*s2);
print(s1-s2);
return 0;
}
Set operator + (Set& s1,Set& s2)
{
Set s(s1);
s.insert(s2.begin(),s2.end());
return s;
}
Set operator * (Set& s1,Set& s2)
{
Set s(s1);
It
it=set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),s.begin());
s.erase(it,s.end());
return s;
}
Set operator - (Set& s1,Set& s2)
{
Set s(s1);
It
it=set_difference(s1.begin(),s1.end(),s2.begin(),s2.end(),s.begin());
s.erase(it,s.end());
return s;
}
void print(Set s)
{
cout<<"{";
for(It it=s.begin();it!=s.end();it++)
{
if(it==s.begin())cout<<*it;
else cout<<","<<*it;
}
cout<<"} "<<"size="<<s.size()<<endl;
}
I don't understand.Could anyone give me some help to realize the
operations on set.Thank you very much
(I compile it with Dev C++ 4.9.9.2)
#include<iostream>
#include<set>
#include<string>
#include <algorithm>
using namespace std;
typedef set<string> Set;
typedef Set::iterator It;
void print(Set);
Set operator + (Set&,Set&);
Set operator * (Set&,Set&);
Set operator - (Set&,Set&);
int main(void)
{
string str1[]={"A","B","C","D","E","F","G"};
string str2[]={"A","E","I","O","U"};
Set s1(str1,str1+7);
Set s2(str2,str2+5);
print(s1);
print(s2);
print(s1+s2);
print(s1*s2);
print(s1-s2);
return 0;
}
Set operator + (Set& s1,Set& s2)
{
Set s(s1);
s.insert(s2.begin(),s2.end());
return s;
}
Set operator * (Set& s1,Set& s2)
{
Set s(s1);
It
it=set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),s.begin());
s.erase(it,s.end());
return s;
}
Set operator - (Set& s1,Set& s2)
{
Set s(s1);
It
it=set_difference(s1.begin(),s1.end(),s2.begin(),s2.end(),s.begin());
s.erase(it,s.end());
return s;
}
void print(Set s)
{
cout<<"{";
for(It it=s.begin();it!=s.end();it++)
{
if(it==s.begin())cout<<*it;
else cout<<","<<*it;
}
cout<<"} "<<"size="<<s.size()<<endl;
}