#include "Item.hpp" using namespace std; template class ItemIteratorBase { protected: T *b_; int i_; mutable Item item_; public: ItemIteratorBase(T *b, int i=0): b_(b), i_(i) {}; ItemIteratorBase operator=(T *b) { b_=b; i_=0; return *this;} bool operator==(const ItemIteratorBase& other) const { return b_+i_ == other.b_ + i_; } bool operator==(const T *o) const { return b_+i_ == o; } bool operator!=(const T *o) const { return b_+i_ != o; } bool operator!=(const ItemIteratorBase &o) const { return b_+i_ != o.b_ + o.i_; } ItemIteratorBase operator++() { ++i_; return *this; } }; class ItemIterator: public ItemIteratorBase { public: ItemIterator(const ItemIteratorBase &o): ItemIteratorBase(o) {}; ItemIterator(float *b, int i=0): ItemIteratorBase(b,i) {}; Item* operator->() const { item_ = Item(i_, *(b_+i_)); return &item_; } Item operator*() const { return Item(i_, *(b_+i_)); } }; class ConstItemIterator: public ItemIteratorBase { public: ConstItemIterator(const ItemIteratorBase &o): ItemIteratorBase(o) {}; ConstItemIterator(const float *b, int i=0): ItemIteratorBase(b,i) {}; const Item* operator->() const { item_ = Item(i_, *(b_+i_)); return &item_; } const Item operator*() const { return Item(i_, *(b_+i_)); } }; //template class FullPolicy { protected: float *data_; int n_; public: static const bool do_comp_test = true; FullPolicy(int n): n_(n) { data_= new float[n]; for (int i=0; idata_ != other.data_) { delete [] data_; n_ = other.n_; data_ = new float[n_]; for (int i=0; i