Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

maxvector.cpp

Go to the documentation of this file.
00001 
00009 #ifndef MAXVECTOR_CPP_050403
00010 #define MAXVECTOR_CPP_050403
00011 
00012 
00013 #include <algorithm>
00014 namespace bracz {
00015 
00028 template<class T> class maxvector {
00029 private:
00030   T* data;
00031   size_t length;
00032 public:
00033   typedef T value_type;
00034 
00035   maxvector() {
00036     length=0;
00037     data=NULL;
00038   }
00039 
00040   maxvector(size_t maxsize) {
00041     data=new T[maxsize];
00042     length=0;
00043   }
00044 
00045   ~maxvector() {
00046     delete [] data;
00047   }
00048 
00049   T & DINLINE  operator[](size_t n) {
00050     return data[n];
00051   }
00052 
00053   typedef T* iterator;
00054 
00055   iterator DINLINE begin()  {
00056     return data;
00057   }
00058 
00059   iterator DINLINE end()  {
00060     return data+length;
00061   }
00062 
00063   size_t DINLINE size() {
00064     return length;
00065   }
00066 
00067   /*void DINLINE push_back(T &d) {
00068     data[length++]=d;
00069     }*/
00070   
00071   /*  template<class U> void DINLINE push_back(const U &u) {
00072     data[length++]=T(u);
00073     }*/
00074 
00075   void DINLINE push_back(const T & d) {
00076     data[length++]=d;
00077   }
00078 
00079   void DINLINE pop_back() {
00080     length--;
00081   }
00082 
00083   bool DINLINE empty() {
00084     return (!length);
00085   }
00086   
00087   T & DINLINE back() {
00088     return (data[length-1]);
00089   }
00090 
00091   void DINLINE reserve(size_t n) {
00092     T* newdata = new T[n];
00093     length=std::min(length,n);
00094     for(size_t i=0;i<length;i++) {
00095       newdata[i]=data[i];
00096     }
00097     delete [] data;
00098     data = newdata;
00099   }
00100 
00101   void DINLINE resize(size_t n,const T&d) {
00102     if (!data)
00103       reserve(n);
00104     for (size_t i=length;i<n;++i) {
00105       data[i]=d;
00106     }
00107     length=n;
00108   }
00109 
00110   void DINLINE resize(size_t n) {
00111     if (!data)
00112       reserve(n);
00113     length=n;
00114   }
00115 
00116 
00117   void DINLINE clear() {
00118     length=0;
00119   }
00120 
00121 };
00122 
00123 } //namespace bracz
00124 
00125 #endif //MAXVECTOR_CPP_050403

Generated on Sun Sep 17 17:50:39 2006 for FIM environment by  doxygen 1.4.4