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
00032 template <class T> class Set: public std::set<T>
00033 {
00034 };
00035
00037 template <class T>
00038 Set<T> set_intersect(const Set<T>& A, const Set<T>& B)
00039 {
00040 Set<T> result;
00041 std::insert_iterator<Set<T> > i_iter(result,result.begin());
00042 std::set_intersection(A.begin(),A.end(),B.begin(),B.end(),i_iter);
00043 return result;
00044 }
00046 template <class T>
00047 Set<T> set_difference(const Set<T>& A, const Set<T>& B)
00048 {
00049 Set<T> result;
00050 std::insert_iterator<Set<T> > i_iter(result,result.begin());
00051 std::set_difference(A.begin(),A.end(),B.begin(),B.end(),i_iter);
00052 return result;
00053 }
00055 template <class T>
00056 void set_assign_union(Set<T>& A, const Set<T>& B)
00057 {
00058 typename Set<T>::const_iterator iter = B.begin();
00059 for (; iter != B.end(); iter++)
00060 {
00061 A.insert(*iter);
00062 }
00063 }
00064
00065 }
00066
00067 #endif