📄 mtset.cpp
字号:
#include "set.h"
#include "algo.h"
#include "ctmutex.h"
template <class T> class mt_set : virtual private mutex{
private:
set<T,less<T> > S;
set<T,less<T> > M;
public:
mt_set(void);
mt_set(set<T,less<T> > X);
set<T,less<T> > setUnion(set<T,less<T> > X);
set<T,less<T> > intersection(set<T,less<T> > X);
int membership(set<T,less<T> > X);
set<T,less<T> > difference(set<T,less<T> > X);
};
template <class T> mt_set<T>::mt_set(void)
{
}
template <class T> mt_set<T>::mt_set(set<T, less<T> > X)
{
S = X;
}
template <class T> set<T, less<T> > mt_set<T>::intersection(set<T,less<T> > X)
{
set<T,less<T> > Temp;
less<T> Order;
lock();
set_intersection(S.begin(),S.end(),X.begin(),X.end(),
inserter(Temp,Temp.begin()),Order);
unlock();
return(Temp);
}
template <class T> set<T, less<T> > mt_set<T>::setUnion(set<T,less<T> > X)
{
less<T> Order;
set<T,less<T> > Temp;
lock();
set_union(S.begin(),S.end(),X.begin(),X.end(),
inserter(Temp,Temp.begin()),Order);
unlock();
return(Temp);
}
template <class T> int mt_set<T>::membership(set<T,less<T> > X)
{
return(includes(S.begin(),S.end(),X.begin(),X.end()));
}
template <class T> set<T, less<T> > mt_set<T>::difference(set<T,less<T> > X)
{
set<T,less<T> > Temp;
less<T> Order;
lock();
set_difference(S.begin(),S.end(),X.begin(),X.end(),
inserter(Temp,Temp.begin()),Order);
unlock();
return(Temp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -