当前位置:天才代写 > tutorial > C语言/C++ 教程 > 先容一个模板动态数组

先容一个模板动态数组

2017-11-04 08:00 星期六 所属: C语言/C++ 教程 浏览:527

副标题#e#

本代码提供对动态数组的支持,在内存中措施将数据分块存放,制止了大块内存的申请。同时,与普通的双向链表差异,本代码提供了对内部数据的快速索引,大大提高了数据会见速度。本代码提供C、C++两个版本,可以任意利用、修改、流传。下面是动态数组布局示意图:

介绍一个模板动态数组

图一


#p#副标题#e#

数据布局:

本模块焦点是一个对双向链表的扩展,它通过一个可以指向任意数据范例的指针(在C语言版中是一个void *,在C++中是一个模板)实现了对任意数据范例的处理惩罚。链表中的节点中的data域是真正存放数组中数据的缓冲区的指针,该缓冲区的巨细(必需是一个正整数)一个需要在措施开始时按照实际需要设定,譬喻方针数据量在0到100个阁下,可以将它设成10等(设太小在添加数据时需要频繁为数据分派空间,太大容易造成内存的挥霍),这个时候假如数据量在51到60之间,链表中将包括6个数据节点。

数据接口:(以C++语言版为例)//******************************************
//   name:Add
//   function:添加数据
//   input: T newElement-新数据
//   return: 数据索引号
//   remark:
//******************************************
int Add(T newElement).
//******************************************
//   name:AddBatch
//   function:批量添加数据
//   input: T *pElement-源数组指针
//          int count-数组巨细
//   return: BOOL TRUE-乐成;FALSE-失败
//   remark:
//******************************************
BOOL AddBatch(T *pElement,int count).
//******************************************
//   name:Copy
//   function:数据复制
//   input: CSArray & src-源动态数组
//   return:
//   remark: 利用前请先确保两个工具有沟通的数据范例
//******************************************
void Copy(CSArray &src ).
//******************************************
//   name:GetAt
//   function:获取数组指定位置的数据
//   input: int index-指定位置
//   return: T 数据
//   remark:
//******************************************
T GetAt(int index).
//******************************************
//   name:GetPtAt
//   function:获取数组指定位置的数据的指针
//   input: int index-指定位置
//   return: T 数据
//   remark: 提供对内部数据的直接会见,小心利用!!
//******************************************
T *GetPtAt(int index).
//******************************************
//   name:GetSize
//   function:获取数组的数据容量
//   input: 
//   return: int 数据容量
//   remark:
//******************************************
int GetSize().
//******************************************
//   name:SetAt
//   function:修改数组指定位置的数据
//   input: T newElement-新数据
//          int index-指定索引号
//   return: BOOL TURE-乐成;FALSE-失败
//   remark:
//******************************************
BOOL SetAt(int index,T &newElement).
//******************************************
//   name:InsertAt
//   function:在数组指定位置插入一个新数据
//   input: int index-指定索引号
//          T newElement-待插入的数据
//   return: BOOL TURE-乐成;FALSE-失败
//   remark: 本接口干系到大量数据的迁移,不推荐大量利用
//          算法尚有待进一步优化
//******************************************
BOOL InsertAt(int index,T newElement).
//******************************************
//   name:RemoveAt
//   function:删除数组中指定索引号中包括的数据
//   input: int index-指定索引号
//   return: BOOL TURE-乐成;FALSE-失败
//   remark: 本接口干系到大量数据的迁移,不推荐大量利用
//          算法尚有待进一步优化
//******************************************
BOOL RemoveAt(int index)
//******************************************
//   name:RemoveAll()
//   function:清空工具中的数据
//   input: 
//   return: BOOL TURE-乐成;FALSE-失败
//   remark:
//******************************************
BOOL RemoveAll().
//******************************************
//   name:SetSize()
//   function:配置数据的容量
//   input: int size -数据的容量
//   return: BOOL TURE-乐成;FALSE-失败
//   remark:只答允扩大容量
//******************************************
BOOL SetSize(int size)
代码下载

1、 C语言版(模仿C++的模板及面向工具要领):fteb_array.zip

2、 C++语言版:sarray.zip

本文配套源码

 

    关键字:

天才代写-代写联系方式