定義Vec類,是由int型別的資料組成的向量,過載其輸入、輸出運算子,以及減法運算子。
其中,輸入一個整型向量時,輸入的是一個非減排序的整數序列,其中包含重複值,在輸入時,重複值只保留1個,即Vec類中的向量是遞增排序且不含重複值的。
輸出時,兩兩之間用一個空格隔開。
減法運算,從第1個Vec物件中刪除第2個Vec物件中的元素,不能修改兩個運算元的值。
注意:刪除後,有可能結果為空集。
見樣例。
#include <bits/stdc++.h>
using namespace std;
class Vec
{
public:
int t;
set<int> p;
Vec(){}
friend istream &operator>>(istream &is,Vec &A)
{
int m,n;
cin>>m;
A.t=m;
while(m--)
{
cin>>n;
A.p.insert(n);
}
return is;
}
friend ostream &operator<<(ostream &os,Vec &A)
{
set<int>::iterator it;
for(it=A.p.begin();it!=A.p.end();it++)
{
if(it==A.p.begin())
cout<<*it;
else
cout<<" "<<*it;
}
cout<<endl;
return os;
}
friend Vec operator-(Vec &A,Vec &B)
{
Vec C=A;
set<int>::iterator it;
set<int>::iterator iter;
for(it=B.p.begin();it!=B.p.end();it++)
{
iter=C.p.find(*it);
if(iter!=C.p.end())
C.p.erase(iter);
}
return C;
}
};
int main()
{
Vec v1, v2, v3;
cin>>v1;
cin>>v2;
cout<<"v1:"<<v1;
cout<<"v2:"<<v2;
v3 = v1 - v2;
cout<<"v1:"<<v1;
cout<<"v2:"<<v2;
cout<<"v3:"<<v3;
return 0;
}