动态数组实现stack

    xiaoxiao2021-12-14  17

    #pragma once template<class T> class Stack { public: Stack() :_size(0) , _capacity(3) , _arr(new T[_capacity]) //刚用new T(_capacity) 也成功了 {} ~Stack() { if (_arr) { delete[] _arr; //用了[]和不用[]好像没有太大区别 自己写的小程序内存泄露了对电脑有什么伤害 } } public: void push(const T &x) { if (_size == _capacity) _bordenCapacity(); _arr[_size++] = x; } void pop() { if (_size != 0) --_size; } T& top() { if (_size != 0) return _arr[_size]; } const T& top() const { if (_size != 0) return _arr[_size]; } inline size_t size(){ return _size; } inline bool empty(){ return _size == 0; } void _bordenCapacity() { _capacity = 3 * _capacity + 2; T *tmp = new T[_capacity]; //C++里面将realloc函数怎么了 for (size_t i = 0; i < _size; i++) //memmove不能实现吗 { tmp[i] = _arr[i]; } delete _arr; _arr = tmp; } void print() { for (size_t i = 0; i < _size; i++) { cout << _arr[i]; if (i != _size - 1) cout << "->"; } cout << endl; } private: size_t _size; size_t _capacity; T* _arr; };
    转载请注明原文地址: https://ju.6miu.com/read-964397.html

    最新回复(0)