C++模板实现顺序表
来源:互联网 发布:淘宝发布宝贝过程好慢 编辑:程序博客网 时间:2024/06/05 06:56
#include<iostream>#include<string>using namespace std; template<typename T>class SeqList{public: SeqList() :_size(0) , _capacity(0) { _CheckCapacity(); } void PushBack(const T& d); void PopBack(); void PushFront(const T& d); void PopFront(); int Find(const T& d); void Insert(int pos, const T& d); void Sort(); template<typename T> friend ostream& operator<<<T>(ostream& output, const SeqList<T>& s);//声明友元private: void _CheckCapacity() { if (_size == _capacity) { T* tmp = new T[2 * _capacity + 3]; //memcpy(tmp, _data, sizeof(T)*_size);//string对象赋值时有时候会出现值拷贝 for (int i = 0; i < _size; i++) { tmp[i] = _data[i]; } delete[] _data; _data = tmp; _capacity = 2 * _capacity + 3; } }private: T* _data; int _size; int _capacity;}; template<typename T> void SeqList<T>::PushBack(const T& d){ _CheckCapacity(); _data[_size] = d; _size++;} template<typename T> void SeqList<T>::PopBack(){ _size--;}template<typename T>void SeqList<T>::PushFront(const T& d){ _CheckCapacity(); for (int i = _size; i >0; i--) { _data[i] = _data[i - 1]; } _data[0] = d; _size++;}template<typename T>void SeqList<T>::PopFront(){ for (int i = 0; i < _size; i++) { _data[i] = _data[i + 1]; } _size--;}template<typename T>int SeqList<T>::Find(const T& d){ for (int i = 0; i < _size; i++) { if (_data[i] == d) return i; } return -1;}template<typename T>void SeqList<T>::Insert(int pos, const T& d){ _CheckCapacity(); for (int i = _size; i > pos; i--) { _data[i] = _data[i - 1]; } _data[pos] = d; _size++;}template<typename T>void SeqList<T>::Sort(){ int i = 0; int j = 0; int flag = 0; for (i = 0; i < _size; i++) { flag = 0; for (j = 0; j < _size - 1 - i; j++) { if (_data[j]>_data[j + 1]) { T tmp = _data[j]; _data[j] = _data[j + 1]; _data[j + 1] = tmp; flag = 1; } } if (flag == 0) break; }}template<typename T>ostream& operator<<(ostream& output, const SeqList<T>& s){ for (int i = 0; i < s._size; i++) { output << s._data[i] << " "; } return output;}
0 0
- c++(模板类)实现顺序表
- 【C++】用模板实现顺序表
- 【C++】用模板实现顺序表Vector
- 模板实现顺序表
- 模板实现顺序表
- 模板实现顺序表
- 模板实现顺序表
- [数据结构] 顺序表的实现(c++/类模板)
- 【C++】模板类顺序表
- C++模板实现顺序表
- 顺序表 C++模板实现
- C++模板实现顺序表
- 模板实现动态顺序表
- 用模板实现顺序表
- 类模板实现顺序表
- 顺序表的模板实现
- 模板类实现顺序表
- 顺序表---模板类实现
- c++动态内存管理
- 模拟new[]和delete[]操作符开辟内存空间及释放内存空间过程
- string类的两种实现方法及string的一些成员函数的实现
- string类的写时拷贝
- c++中各类继承下的对象模型
- C++模板实现顺序表
- c++模板实现双向链表
- 模拟实现c++标准库和boost库中的智能指针
- 实现auto_ptr的两种方法
- c++实现栈
- 科艺嘉2016年HR总监HR管理沙
- hdu 5443 The Water Problem(长春网络赛——暴力)
- 54、 从1.5k到18k, 一个程序员的5年成长之路
- Linux 安装MySQL