数据结构应用(组应用——基础知识).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数组应用 基础知识 C++中,数组是一种集合数据类型,它由许多元素组成,每一个元素都有相同的数据类型,在内存中占用相同大小的存储单元,且在内存中连续存放。 每一个数组有一个名字,数组中的每一个元素有一个序号(或称下标)表示元素在数组中的位置,我们正是通过下标来识别数组中的每一个元素。 数组 数组中的元素可以是任何数据类型,因此,通过定义恰当的数据类型(数据结构),我们可以使用数组保存游戏中复杂的信息,比如游戏中的地图相关信息。 下面先回顾一下与数组相关的知识: 如何定义一个一维数组,如何访问这个数组中的元素 如何通过指针动态创建一维数组,然后用指针访问该数组,最后释放该数组 如何定义一个二维数组,并访问 如何通过指针动态创建二位数组,并访问、释放 一维数组和二维数组之间关系如何,如何转换 定义和访问一维数组 int a[10]; for(int i=0;i10;i++) { a[i] = i; } int *pa= new int[10]; for(int i = 0;i10;i++) { pa[i] = i * 2; } delete []pa; 定义和访问二维数组 int b[5][10]; for(int i=0;i5;i++) { for(int j=0;j10;j++) { b[i][j] = i * j; } } int **pb; pb = (int**)new int *[5]; for(int i=0;i5;i++) { pb[i] = new int[10]; } for(int i=0;i5;i++) { for(int j=0;j10;j++) { pb[i][j] = i * j; } } for(int i=0;i5;i++) { delete []pb[i]; } delete []pb; 一维数组和二维数组之间的关系 计算机内存是线性排列的(一维),所以二维数组实际上都是由一维数组模拟。 两者之间可以如下转化 假设要描述一个m X n的二维数组,我们可以先如下定义一个一维数组 int a[m * n]; 访问 第i行j列的元素的方式如下: a[i * n + j] 同理,如果是下表为k的元素代表的二维数组中的行列计算如下: int nCol = k % n; int nRow = k / n; 动态数组 数组在定义时需要指定长度,但是在应用时,数组长度往往需要根据需要进行变化,此时需要使用动态数组。 在C++里,我们可以定义一个类来描述动态数组, 在该类里,可以预先分配一个固定大小的数组空间。数据先存放在该空间里,如果该空间不够用了, 则在重新分配两倍原大小的空间,将数据拷贝过来, 并删除原来分配的空间。类定义如下 class CDynamicArray { public: CDynamicArray(); ~CDynamicArray(); public: void Insert(int val); int operator[](int nIndex); void Remove(int nIndex); int GetSize(); private: int *pArray; int nSize; Resize(); }; STL 实际上,我们可以不用自己定义动态数组类,因为STL已经帮我们做好了这样的工作。 STL(Standard Template Library)是C++标准库的一部分,是用C++ Template机制来表达泛型的库。 示例 用一个泛型算法可以处理多种数据结构。而且在获得弹性的同时运行效率上和以前相比没有损失。 STL的组成 六大组件 容器(Container) 算法(Algorithm) 迭代器(Iterator) 仿函数(Function object) 适配器(Adaptor) 空间配制器(allocator) STL的六大组件全都是抽象出来的Concepts 容器的概念 用来管理一组元素。 Container(容器) 容器的分类 序列式容器(Sequence containers) 每个元素都有固定位置--取决于插入时机和地点,和元素值无关。 vector、deque、list 关联式容器(Associated containers) 元素位置取决于特定的排序准则,和插入顺序无关 set、multiset、map、multimap Vectors 将元素置于一个动态数组中加以管理。 可以随机存取元素(用索引直接存取)。 数组尾部添加或移除元素非常快速。但是在中部或头部安插元素比较费时。 序列式容器 Vectors 

文档评论(0)

wyw118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档