00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _adevs_set_h
00021 #define _adevs_set_h
00022 #include <set>
00023 #include <algorithm>
00024
00025 namespace adevs
00026 {
00027
00031 template <class T> class Set: public std::set<T>
00032 {
00033 };
00034
00036 template <class T>
00037 Set<T> set_intersect(const Set<T>& A, const Set<T>& B)
00038 {
00039 Set<T> result;
00040 std::insert_iterator<Set<T> > i_iter(result,result.begin());
00041 std::set_intersection(A.begin(),A.end(),B.begin(),B.end(),i_iter);
00042 return result;
00043 }
00045 template <class T>
00046 Set<T> set_difference(const Set<T>& A, const Set<T>& B)
00047 {
00048 Set<T> result;
00049 std::insert_iterator<Set<T> > i_iter(result,result.begin());
00050 std::set_difference(A.begin(),A.end(),B.begin(),B.end(),i_iter);
00051 return result;
00052 }
00054 template <class T>
00055 void set_assign_union(Set<T>& A, const Set<T>& B)
00056 {
00057 typename Set<T>::const_iterator iter = B.begin();
00058 for (; iter != B.end(); iter++)
00059 {
00060 A.insert(*iter);
00061 }
00062 }
00063
00064 }
00065
00066 #endif