STL之vector简单实现
2015-08-08 22:26
435 查看
tvector头文件定义tvector类
cpp文件进行简单测试
测试结果
//tvector.h文件 #include<iostream> using namespace std; template<typename t> class tcontainer { virtual void push(const t&) = 0; virtual void pop()= 0; virtual const t& begin() = 0; virtual const t& end() = 0; virtual size_t size() = 0; }; template<typename t> class tvector { public: static const size_t _step = 10; tvector() { _size = 0; _cap = _step; buf = 0; re_capacity(_cap); } ~tvector() { free(buf); } void re_capacity(size_t s) { if (!buf) buf = (t*)malloc(sizeof(t)*s); else buf = (t*)realloc(buf, sizeof(t)*s); } virtual void push(const t& v) { if (_size >= _cap) re_capacity(_cap += _step); buf[_size++] = v; } virtual void pop() { if (_size) --_size; } virtual const t& begin() { return buf[0]; } virtual const t& end() { if (_size) return buf[_size-1]; } virtual size_t size() { return _size; } const t& operator[](size_t i) { if (i >= 0 && i < _size) return buf[i]; } private: size_t _size; size_t _cap; t* buf; };
cpp文件进行简单测试
#include "tvector.h" using namespace std; int main() { tvector<int> tv; for (int i = 0; i < 15; ++i) tv.push(i); for (int i = 0; i < 15; ++i) cout << tv[i] << endl; }
测试结果
相关文章推荐
- 等待时动画效果的实现
- Lucene.Net+盘古分词->开发自己的搜索引擎
- Jquery实现图片轮播功能
- 常见的HTTP状态码(HTTP Status Code)说明
- 五分钟上手Git
- python easy_install django 安装
- 70.Climbing Stairs
- 浅谈C/C++的浮点数在内存中的存储方式
- 【数论】hdu3944 DP?
- 工作总结
- Linux中vi文件保存退出命令“:wq"和":x”的区别
- Java学习——话说J2EE发展历程
- Amber大神的《最小割模型在OI中的应用》膜后感
- dave3,UpdateSiteDAVEApps_1_0_66 ,dave4_v4.0.0 ,dave_v4.1.2 软件安装资源汇总
- 使用Filter过滤器,控制不能直接访问JSP文件
- 执行了的程序,才是你的程序.
- C语言的基础复习——scanf使用注意
- 网页飘浮广告
- 数据结构之插值查找
- 执行了的程序,才是你的程序.