博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vector容器的实现
阅读量:6676 次
发布时间:2019-06-25

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

简单实现了构造、析构、push_back、pop_back、operator=、operator[]、clear等函数

template
class my_vector {private: int count; int alloc_size; T *arr;public: my_vector():count(0),alloc_size(0),arr(NULL) { } my_vector(int n, T ele): count(0),alloc_size(n) { arr = new T[n]; while(n--) { push_back(ele); } } my_vector(const my_vector &other):count(0),alloc_size(0),arr(NULL) { *this = other; } my_vector
& operator=(const my_vector &other) { count = other.size(); alloc_size = count; T *oldarr = arr; arr = new T[count]; for(int i = 0; i < count; i++) arr[i] = other[i]; delete []oldarr; } void push_back(T ele) { if(count == alloc_size) { T *oldarr = arr; int new_size; if(alloc_size == 0) new_size = 1; else new_size = alloc_size*2; arr = new T[new_size]; for(int i = 0; i < count; i++) { arr[i] = oldarr[i]; } alloc_size = new_size; delete []oldarr; } arr[count] = ele; count++; } void pop_back() { if(count > 0) count--; } int size() { return count; } T& operator[](int pos) { assert(pos < count); return arr[pos]; } void clear() { count = 0; } ~my_vector() { count = 0; alloc_size = 0; delete []arr; arr = NULL; }};

转载地址:http://pgrxo.baihongyu.com/

你可能感兴趣的文章
神经风格转换Neural Style Transfer a review
查看>>
linux/python 常用控制台打印颜色
查看>>
做个CMS吧(一)-站点基本设置
查看>>
ios 根据颜色生成图片,十六进制颜色。
查看>>
C — 对C语言的认识
查看>>
【转载】wpf 查找指定类型的子控件
查看>>
linkin大话数据结构--Set
查看>>
接口測试-HAR
查看>>
$.each 和$(selector).each()的区别
查看>>
45435
查看>>
JSON格式自动解析遇到的调用方法问题.fromJson() ..readValue()
查看>>
Crystal Reports for Visual Studio 2015 安装
查看>>
iOS UI 15 网络编程下载 图片 音乐 大文件 视频 get/ post方法
查看>>
Android开发之50个常见实用技巧——活用布局
查看>>
linux文件系统 - 初始化(二)
查看>>
Python的可视化图表工具集
查看>>
《条目二十九:对于逐个字符的输入请考虑istreambuf_iterator》
查看>>
Python的优点与功能
查看>>
sed实例精解--例说sed完整版
查看>>
apache安装mod_ssl.so 出现 undefined symbol: ssl_cmd_SSLPassPhraseDialog错误解决
查看>>