类中应用标准库迭代器问题~~~
#ifndef _setOperate
#define _setOperate
#include<set>
#include<iostream>
#include<algorithm>
using namespace std;
template<class T>
class set1
{
public:
set1(set<T>&);
set1(istream&,int );
void intersection(set1<T>&);//求两个集合交集
void merge(set1<T>&);//求两个集合并集
bool belongto(T&);//单个元素是否属于集合
bool belongto(set1<T>&);//集合是否属于另一个集合
set<T> coll;//集合元素结构
set<T> interset;
set<T> mergeset;
};
template <class T>
set1<T>::set1(set<T>& a)
{
copy(a.begin(),a.end(),coll.begin());
};
template <class T>
set1<T>::set1(istream& in,int n)
{
T tmp;
for(int i=0;i<n;++i)
{
in>>tmp;
coll.insert(tmp);
}
};
template <class T>
void set1<T>::intersection(set1<T>& b)
{
set<T>::iterator pos=b.coll.end();//为什么这些迭代器使用不正确!
set<T>::iterator p=coll.begin();
for(;p<coll.end();++p)
{
if(b.coll.find(*p)!=pos)
interset.insert(*p);
}
}
template <class T>
void set1<T>::merge(set1<T>& b)
{
copy(coll.begin(),coll.end(),mergeset.begin());
set<T>::iterator pos=mergeset.end(),p=b.coll.begin();//!!!!
for(;p<b.coll.end();++p)
{
if(mergeset.find(*p)!=pos)
mergeset.insert(*p);
}
}
template <class T>
bool set1<T>::belongto(T& b)
{
if(coll.find(b)!=coll.end())
return true;
return false;
}
template <class T>
bool set1<T>::belongto(set1<T>& b)
{
set<T>::iterator p=b.coll.begin(),pos=coll.end();
for(;p<b.coll.end();++p)
{
if(coll.find(*p)==pos)
break;
}
if(p!=b.coll.end())
return false;
return true;
}
#endif
int main()
{
}
//希望多多帮忙~~我一直对template 掌握不好~~这次和标准库共同使用
//更是~~~惨啊~~谢谢了