第20章 C++向量容器的使用.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文档。上传文档
查看更多
第20章C向量容器的使用

第20章 C++向量容器的使用 通过前一章的学习,相信大家已经明白数据结构中,最简单和常用的单链表是如何创建及操作的。本章将继续讲解C++中另一个重要工具:标准模板类库STL。 标准模板类库STL使程序员能够快速建立具有类型安全的类库集合,方便了更大规模的软件开发。但本书作为初级教程只讲解其中一个部分——向量容器的使用。更多的关于模板的知识请读者参考相关书籍(Effective C++)。本章主要涉及到的知识点如下所述。 向量容器的概念:知道什么是向量容器。 向量容器的创建:知道如何创建向量容器。 向量容器的操作:知道如何增加向量元素、如何删除向量元素。 20.1 向量容器的概念及创建 前面学习数组时,已经知道数组的大小在创建时已经确定,在程序运行中是不能被改变的,使用起来非常不方便。为此C++中引用了堆内存,不过堆内存如果申请后,没有被释放,也将会导致系统内存泄露,是不安全的。那有没有即安全又方便的方法呢?答案是“有的”。这就是本节所要讲解的向量容器。 20.1.1 向量容器的概念 在物理学中,既有大小又有方向的量叫做向量。而在C++中,向量容器(vector)和数组很相似,是一种占用连续内存空间、元素数据类型相同的数据结构。 不过,其与数组不同,数组是不能动态增加或者减少的,在定义了数组后,其就占用指定大小的连续内存空间,在程序运行过程中,不能被改变。而向量容器,是可以动态增加或者删除的元素的。定义后,如果不包含元素,则不占用任何空间;如果包含元素,则只占用所有元素总和大小的连续空间。 20.1.2 向量容器的创建 向量容器vector的声明是包含在vector文件中,在使用前必须先包含这个文件,而且因为STL库中包含太多的模板和算法,所以也必须使用名字空间说明。 这里对名字空间作一下简单的解释,之所以出来这样一个东西,是因为不同的人写的程序不可能所有的变量都没有重名现象,对于一个代码库来说,这个问题尤其严重。如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题。 为了解决这个问题,引入了名字空间这个概念,通过使用using namespace xxx;读者就可以指定所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的冲突了。 这里使用的是常用的名字空间是std,当然读者也可以定义自己的名字空间,不过不属于本书所讲解的内容。创建vector容器对象的格式如下: #include vector using namespace std; vector元素数据类型 向量容器名; 20.2 对向量容器的操作 通过前面的方法,就可以创建一个向量容器对象。不过这只是一个没有包含任何元素的向量容器对象,下面就将讲解如何增加、访问和删除元素。 20.2.1 向量元素的增加 向量容器vector和数组不同,其可以随时任意的添加新元素,只要新元素的数据类型和vector声明时的数据类型相同即可。因为vector声明的是一个向量容器对象,所以通过这个对象,调用vector的成员函数push_back来实现元素的增加,其调用方法如下所示。 #include iostream.h #include vector using namespace std; //使用名字空间std void main() { vector int vec; vec.push_back(10); //增加一个int型的元素,其值为10 vec.push_back(20); //增加一个int型的元素,其值为20 } 注意:push_back成员函数是在原向量容器对象的最后添加的新元素。 像上面这样,就给vec对象增加新元素了。每调用一次push_back,vec对象的向量容器大小也会自己增加1。 20.2.2 向量元素的访问 给向量容器对象增加了新元素后,那么如何对其元素进行访问呢?其实很简单“像数组元素一样访问就行”,即通过“[]”操作符来进行访问。不仅如何,vector对象还可以调用size成员函数来获得整个向量容器的当前大小,其如代码20.1所示。【代码参考:光盘的源代码\C20\chap1.dsp】 20.2.3 向量元素的删除 既然可以给vector对象增加新元素,当然也可以随时删除vector对象中的元素,删除vector对象的元素,可以调用其成员函数pop_back。现在通过修改前面的示例程序,来达到删除vector对象最后5个元素的目的。其如代码20.2所示。【代码参考:光盘的源代码\C20\chap2.dsp】 20.3 向量容器的应用 为了让大家更进一步的掌握好向量容器对象的创建及其相关的操作。现在再举一个用向量来求Fibonacci数列前n个数的例子并输出,然后删

文档评论(0)

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

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

1亿VIP精品文档

相关文档