#ifndef __tpvector #define __tpvector #ifndef G4USE_OLDSTL #include #else #include #endif #if defined(G4USE_NAMESPACE) using std::vector; #endif template class RWTPtrVector : public vector { #ifdef G4USE_EXPLICIT_TYPES_IN_TEMPLATES typedef T** iterator; typedef T* const* const_iterator; #endif public: RWTPtrVector (); RWTPtrVector (unsigned int n); RWTPtrVector (unsigned int n, T* const & iPtr); RWTPtrVector (const RWTPtrVector& iPtr); ~RWTPtrVector(){} // Copy constructor and assignment operator inherited from vector. RWTPtrVector& operator = (T* p) { for(iterator i = vector::begin(); i != vector::end(); ++i) { *i = p; } return *this; } T* operator () ( size_t n ) const { return vector::operator[](n);} T*& operator () ( size_t n ) { return vector::operator[](n);} // // The [] operator should perform bound checking // T* operator [] ( size_t n ) const { return vector::operator[](n);} T*& operator [] ( size_t n ) { return vector::operator[](n);} T* const * data() const { return &(vector::front()); } size_t length() { return vector::size();} void reshape( size_t n ); }; #include "rw/tpvector.icc" #endif