nuclear@4: /* vi:set ft=cpp: */ nuclear@4: #ifndef VECTOR_H_ nuclear@4: #define VECTOR_H_ nuclear@4: nuclear@4: template nuclear@4: class vector { nuclear@4: private: nuclear@4: T *data; nuclear@4: size_t num_items, max_items; nuclear@4: nuclear@4: public: nuclear@4: vector() nuclear@4: { nuclear@4: data = 0; nuclear@4: num_items = max_items = 0; nuclear@4: } nuclear@4: nuclear@4: vector(const vector &v) nuclear@4: { nuclear@4: data = 0; nuclear@4: num_items = max_items = 0; nuclear@4: resize(v.size()); nuclear@4: nuclear@4: for(size_t i=0; i 0) { nuclear@4: T *newdata = new T[nsz]; nuclear@4: if(!newdata) return; nuclear@4: nuclear@4: size_t num = num_items < nsz ? num_items : nsz; nuclear@4: for(size_t i=0; i= max_items) { nuclear@4: resize(max_items > 0 ? max_items * 2 : 8); nuclear@4: } nuclear@4: data[num_items++] = item; nuclear@4: } nuclear@4: nuclear@4: T &operator [](int idx) nuclear@4: { nuclear@4: return data[idx]; nuclear@4: } nuclear@4: nuclear@4: const T &operator [](int idx) const nuclear@4: { nuclear@4: return data[idx]; nuclear@4: } nuclear@4: }; nuclear@4: nuclear@4: #endif // VECTOR_H_