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

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

说明:本文仅供学习交流,转载请标明出处,欢迎转载。

       实现vector容器的思路等同于实现一个动态数组,以下我们參照源代码的相关资料,给出一个vector容器的大致框架,仅仅有声明,没给出详细的实现。

       代码的框架注意从下面几个方面给出:

       (1)空间分配属性,因为是对外封闭的,故为procted;

       (2)共同拥有訪问的属性,可供外部用户訪问,定义为public;

       (3)容器的构造函数与析构函数;

       (4)vector容器的插入操作。

       (5)vector容器的删除操作;

       (6)vector容器的大小操作;

       (7)vector容器的訪问操作。

         详细的大致框架例如以下所看到的:

#include
#include
//用到了size_t和ptrdiff_tusing namespace std;template
class vector{ protected: typedef simple_alloc
data_allocator;//定义一个空间分配器 iterator start;//起始地址 iterator finish;//容器实际大小的末端 iterator end_of_storage;//容器最大可容大小的末端 void fill_initialize(size_type n,const T&x);//分配n个元素的大小,初值为x void deallocate();//释放整个容器空间 public: /*******公有属性,类型别名************/ typedef T value_type;//元素类型 typedef value_type* pointer;//指针类型 typedef value_type* iterator;//迭代器类型 typedef const value_type* const_iterator;//指向常量的迭代器类型 typedef value_type& reference;//引用类型 typedef size_t size_type;//大小类型 typedef ptrdiff_t difference_type;//指针差值类型 /***********构造/析构函数*************/ vector();//默认构造函数 explicit vector(size_type n);//单形參构造函数,explicit防止类型的隐式转化 vector(size_t n,const T & t);//带初值的构造函数 ~vector();//析构函数 /***********插入操作******************/ void push_back(const T& t);//后插入值t iterator insert(iterator iter,const T& t);//在iter前插入值t void insert(iterator iter,size_type n,const T& t);//在iter前插入n个初值为t的元素 void insert(iterator iter,iterator b,iterator e);//在iter前插入迭代器范围[b,e)的元素 /***********删除操作******************/ iterator erase(iterator iter);//删除iter所指向的元素 iterator erase(iterator b,iterator e);//删除迭代器范围[b,e)所指向的元素 void clear();//清除容器内全部的元素 void pop_back();//将容器的最后一个元素弹出 /***********大小操作******************/ size_type size()const;//获取实际使用的大小 size_type max_size()const;//获取编译器可申请的最大大小。以元素的个数为单位 size_type capacity()const;//获取容器当前的容量 bool empty()const;//是否为空容器 void resize(size_type n);//将容器的实际大小调整为n void resize(size_type n,const T& t);//将容器的时间大小调整为n,并提供必要的初值t /***********訪问操作******************/ iterator begin();//取容器头指针 iterator end();//取容器最后一个元素的下一个指针 reference operator[](size_type i);//v[i] reference at(size_type i);//取容器的第i个元素,等价于v[i] reference front();//返回容器头部元素的值 refrence back();//返回容器尾部元素的值};

參考文献:

[1]《C++ primer 第四版》

[2]《STL源代码剖析 侯捷》

你可能感兴趣的文章
Premiere Pro & After Effects插件开发调试方法
查看>>
墨西哥短暂生活杂谈
查看>>
第四篇:R语言数据可视化之折线图、堆积图、堆积面积图
查看>>
异步编程之Javascript Promises 规范介绍
查看>>
EnumRemarkAttribute,获取属性值
查看>>
GCC扩展(转--对看kernel代码有帮助
查看>>
MVC3中使用RadioButtonFor()
查看>>
单元测试的概念
查看>>
Android特效 五种Toast详解
查看>>
phpcms(4) V9 栏目管理
查看>>
php多进程pcntl学习(采集新浪微博)
查看>>
[转]ListView学习笔记(一)——缓存机制
查看>>
【完全跨域】异步上传文件并获得返回值
查看>>
【TCP/IP详解 卷一:协议】第二章:链路层
查看>>
AWS开发人员认证考试样题解析
查看>>
Linux_DHCP服务搭建
查看>>
日请求亿级的 QQ 会员 AMS 平台 PHP7 升级实践
查看>>
【Coursera】Security Introduction -Eighth Week(2)
查看>>
Vue系列:如何将百度地图包装成Vue的组件
查看>>
Charles 从入门到精通
查看>>