C++模板顺序表
来源:互联网 发布:ubuntu ntfs 移动硬盘 编辑:程序博客网 时间:2024/06/13 01:50
.h
#define _CRT_SECURE_NO_WARNINGS 1template <typename T>class SeqList{public:SeqList():_data(NULL), _size(0), _capacity(0) //容量{}~SeqList(){Distory();}SeqList(const SeqList<T>& s):_data(new T[s._size]), _size(s._size)- capacity(s._size){for (size_t i = 0; i < _size; i++){_data[i] = s._data[i];}}SeqList<T>& operator=(const SeqList <T>&s){if (this != &s){T* tmp = new T[s._size];for (size_t i = 0; i < s._size; i++){tmp[i] = s._data[i];}delete[]_data;_data = tmp;_size = s._size;_capacity = s._size;}return*this;}void PushBack(const T& x){_CheckCapacity();_data[_size] = x;_size++;}void PopBack(){if (_size > 0){--_size;}}void PushFront(const T&x){_CheckCapacity();for (size_t i = _size; i > 0; i--){_data[i] = _data[i - 1];}_data[0] = x;_size++;}void PopFront(){if (_size > 0){for (size_t i = 0; i < _size - 1; i++){_data[i] = _data[i + 1];}_size--;}}void Print(){if (_size == 0){cout << "顺序表为空!";}for (size_t i = 0; i < _size; i++){cout << _data[i] << " ";}cout << endl;}protected:void _CheckCapacity(){if (_size >= _capacity){T* tmp = new T[_capacity * 2 + 3];for (size_t i = 0; i < _size; i++){tmp[i] = _data[i];}delete[]_data;_data = tmp;_capacity = _capacity * 2 + 3;}}void Distory(){if (_data){delete[]_data;_data = NULL;_size = 0;_capacity = 0;}}protected:T* _data;size_t _size;size_t _capacity;};void test1(){SeqList<int>L;L.PushBack(1);L.PushBack(2);L.PushBack(3);L.PushFront(99);L.PopBack();L.PopBack();L.PopBack();L.PopFront();L.Print();}//string 类的拷贝构造以及运算符重载void test2(){SeqList<string>L;L.PushBack("11111111111111111");L.PushBack("2222");SeqList<string>l1;l1 = L;l1.Print();}//string类的尾插及尾删&头插及头删void test3(){SeqList<string>L;/*L.PushBack("11111111111111111");L.PushBack("2222322");L.PopBack();L.PopBack();*/L.PushFront("11111111111111");L.PushFront("222234444444444");L.PushFront("222111");L.PopFront();L.Print();}.cpp
#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>#include<string>using namespace std;#include"Seqlist.h"int main(){ /*test1();*//* test2();*/test3();system("pause");return 0;}
0 0
- 【C++】模板类顺序表
- c++(模板类)实现顺序表
- 【C++】用模板实现顺序表
- 【C++】用模板实现顺序表Vector
- [数据结构] 顺序表的实现(c++/类模板)
- 模板顺序链表
- 顺序表模板C++
- 模板实现顺序表
- 顺序表模板
- 模板实现顺序表
- C++模板顺序表
- 模板实现顺序表
- 模板顺序表
- 顺序表类模板
- 顺序表---模板
- 模板实现顺序表
- 顺序表类模板
- 顺序表类模板
- android.view.WindowLeaked异常
- 图文教程vs2012+eclipse开始jni教程实例
- 1.Java实验1.基础使用和Date,Calendar类
- 幻灯片统计
- 按截断二进制指数退避算法进行重传时,重传失败的概率是怎么算的?
- C++模板顺序表
- AS 快捷键
- 完美立方
- 文章标题
- gRPC Java Quickstart
- 第6章 HTTP 头部 通用头部字段
- 15秒的倒计时和15分钟的倒计时
- 蓝桥杯之《人民币金额大写》
- SpringBoot 学习记录(三): jpa