> 0); –count: } T top() const

Автор admin Среда, 20 мая 2009 11:32

> 0); –count: } T top() const { assert(count > 0): return data[count-l]: } std::size_t sizeO const { return count; } }: 216 Глава 5 • Шаблоны // Полная специализация для void* tempiate<> class Stack { void** data: std::size_t count; std::size_t capacity; enum {INIT = 5}; public: Stack О { count = 0: capacity = INIT; data = new void*[INIT]; } void push(void* const & t) { if (count == capacity) { std:-.size_t newCapacity = 2*capacity; void** newData = new void*[newCapacity]; std::memcpy(newData, data. count*sizeof(void*)); delete [] data; data = newData; capacity = newCapacity; } assert(count < capacity); data[count++] = t: } void pop() { assert(count > 0); –count; } void* topО const { assert(count > 0); return data[count-l]; } std::size_t sizeO const {return count;} }: // Неполная специализация для других указателей tempiate class Stack : private Stack { typedef Stack Base; public: void push(T* const & t) {Base::push(t);} void pop() {Base::pop();} T* top() const {return static_cast(Base::top());} std::size_t sizeO {return Base::size();} }: #endif // NOBLOATJ //


Комментарии закрыты.