My Project
|
00001 #ifndef H_MYSET 00002 #define H_MYSET 00003 00004 #include <iostream> 00005 #include <set> 00006 00007 using namespace std; 00008 00012 template < typename T > 00013 T Intersection(T C1, T C2){ 00014 00015 typename T::iterator it_set; 00016 T ret; 00017 00018 for (it_set = C1.begin(); it_set != C1.end(); it_set++){ 00019 if (find(C2.begin(), C2.end(), *it_set) != C2.end()) 00020 ret.insert(ret.begin(), *it_set); 00021 } 00022 00023 return ret; 00024 }; 00025 00029 template < typename T > 00030 T Difference(T C1, T C2){ 00031 00032 typename T::iterator it_set; 00033 T ret; 00034 00035 for (it_set = C1.begin(); it_set != C1.end(); it_set++){ 00036 if (find(C2.begin(), C2.end(), *it_set) == C2.end()) 00037 ret.insert(ret.begin(), *it_set); 00038 } 00039 00040 return ret; 00041 }; 00042 00046 template <typename T> 00047 T Union(T C1, T C2){ 00048 typename T::iterator it_set; 00049 T ret; 00050 00051 for (it_set = C1.begin(); it_set != C1.end(); it_set++){ 00052 if (find(ret.begin(), ret.end(), *it_set) == ret.end()) 00053 ret.insert(ret.begin(), *it_set); 00054 } 00055 00056 for (it_set = C2.begin(); it_set != C2.end(); it_set++){ 00057 if (find(ret.begin(), ret.end(), *it_set) == ret.end()) 00058 ret.insert(ret.begin(), *it_set); 00059 } 00060 00061 return ret; 00062 } 00063 #endif