00001 #ifndef _PMINSERTER_H 00002 #define _PMINSERTER_H 00003 00005 template<typename T> 00006 class PMInserter 00007 { 00008 public: 00009 PMInserter() {} 00010 00011 virtual ~PMInserter() {} 00012 00013 virtual void operator+=(T& elem) = 0; 00014 00015 virtual bool empty() = 0; 00016 }; 00017 00018 template<typename Container, typename T> 00019 class PMBackInserter : public PMInserter<T> 00020 { 00021 private: 00022 Container& _container; 00023 00024 public: 00025 PMBackInserter(Container& container) : PMInserter<T>(), _container(container) {} 00026 00027 virtual ~PMBackInserter() {} 00028 00029 virtual void operator+=(T& elem) 00030 { 00031 _container.push_back(elem); 00032 } 00033 00034 virtual bool empty() 00035 { 00036 return _container.empty(); 00037 } 00038 }; 00039 00040 #endif
1.4.4