博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用多态性实现线性表(插入、删除、测长等)
阅读量:6329 次
发布时间:2019-06-22

本文共 1732 字,大约阅读时间需要 5 分钟。

1 #include"iostream" 2 #include"stdio.h" 3 #include"algorithm" 4 #include"map" 5 using namespace std; 6 template
7 struct TContainer 8 { 9 virtual void push(const T&)=0;10 virtual void pop()=0;11 virtual const T& begin()=0;12 virtual const T& end()=0;13 virtual size_t size()=0;14 };15 template
16 struct TVector:public TContainer
17 {18 static const size_t _step=100;19 TVector()20 {21 _size=0;22 _cap=_step;23 buf=0;24 re_capacity(_cap);25 }26 ~TVector()27 {28 free(buf);29 }30 void re_capacity(size_t s)31 {32 if(!buf)33 buf=(T*)malloc(sizeof(T)*s);34 else35 buf=(T*)realloc(buf,sizeof(T)*s);36 }37 virtual void push(const T& v)38 {39 if(_size>=_cap)40 {41 re_capacity(_cap+=_step);42 }43 buf[_size++]=v;44 }45 virtual void pop()46 {47 if(_size)48 _size--;49 }50 virtual const T& begin()51 {52 return buf[0];53 }54 virtual const T& end()55 {56 if(_size)57 return buf[_size-1];58 }59 virtual size_t size()60 {61 return _size;62 }63 const T& operator[](size_t i)64 {65 if(i>=0&&i<_size)66 return buf[i];67 }68 private:69 size_t _size;70 size_t _cap;71 T* buf;72 };73 74 int main()75 {76 TVector
v;77 for(int i=0;i<100;i++)78 v.push(i);79 for(int i=0;i<100;i++)80 cout<
<
View Code

 

转载于:https://www.cnblogs.com/acm-jing/p/10243721.html

你可能感兴趣的文章
RHEL6.5与7.2本地与网络YUM源配置
查看>>
移动应用设置展现
查看>>
awk匹配案例
查看>>
linux的vi命令
查看>>
猜字游戏
查看>>
实战:在Windows Server Core上安装和配置DHCP服务
查看>>
介绍一下Cocao 和Cocoa Touch
查看>>
Fedora上安装并配置samba服务
查看>>
梭猫互联分享:Web服务器教程 虚拟主机IIS防范***常见问答
查看>>
ip classless的作用!
查看>>
查询数据以Excel形式导出
查看>>
pptpd一键搭建***脚本
查看>>
go语言net包rpc远程调用的使用
查看>>
我的友情链接
查看>>
ESXi 5.1 root密码忘记重置方法
查看>>
linux 下jdk 1.7.0_25 java 的安装
查看>>
Exchange 迁移 Public Folder 公共文件夹
查看>>
SQLI-LABS LESS 1-LESS 22
查看>>
1.9-while循环
查看>>
c/c++ 运算符的优先级和结合性(整理)
查看>>