动态数组实现stack

来源:互联网 发布:恢复硬盘数据的软件 编辑:程序博客网 时间:2024/06/07 02:42
#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;};

0 0
原创粉丝点击