- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可用资源——STL中的线性表 参考书: 1.左飞编《数据结构原理与经典问题求解》电子, 2008.10 2.P.J.PLAUGER等著 王昕译 《C++ STL中文版》电力, 2002.5 3.翁惠玉《数据结构:思想与实现》高教, 2009.8 章小莉 北京电子科技学院 计算机科学与技术系 STL中的线性表 1 关于STL的两个基本概念 (1) 容器 (2) 迭代器 2 STL中的两种一维线性表的实现 (1) 矢量类vector——顺序表 (2) 链表类list——双向链表 1 概念1:容器 容器(Container) 一个数据结构的实现。即容纳一组数据元素的容器。 是为了保存一组类型相同的对象而设计的类。 可以存放一组具有特定关系的对象。 容器提供的服务 有插入对象、删除对象、查找某一对象,以及按某种次序访问容器中的所有对象等。 容器的作用 屏蔽了对象的实际存储方式。 屏蔽了对象的具体类型,即整型、实型等类型都可能。 容器自身实现的方法 由于容器是抽象的,所以容器被设计成一个模板。 概念2:迭代器 迭代器(iterator) 为每种容器定义一个相应的表示其中对象位置的类型,就是迭代器。 迭代器对象相当于指向容器中对象的指针,它封装了容器中对象的位置信息。 迭代器好比是容器的指针,提供对容器中相关元素的操作。如:让迭代器移到当前对象的下一对象;取迭代器指向的对象以及判断迭代器指向的对象是否存在等; 迭代器的作用 隐藏数据的存储方式。 2 STL中的两种线性表实现 在STL中实现了两种一维的线性表 (1)向量类vector 在头文件vector中定义了模板类vector(向量类),该类是一个容器。它实现的是顺序存储的线性表。 其中的元素可以用v[i]来随机访问第i个元素。 在该模板类支持顺序线性表的基本操作。 (2)链表类list 在头文件list中定义了模板类list(双向链表类),该类是一个容器,它实现的是链表存储的双向线性表。 其中的元素用迭代器类iterator来访问。 该模板类支持双向链表的基本操作; 两种线性表对应的迭代器 为了便于用户使用,STL将迭代器定义成相应的容器类的公用内嵌类,且名字相同; 线性表迭代器是:iterator和const_iterator,其中 iterator,可以通过迭代器修改它指向的数据元素; const_iterator,只能读它指向的数据元素而不修改修改元素; (1)STL中的顺序表vector 向量类 vector看起来像数组,可以顺序存储一系列同类型的数据。 相比数组,vector有边界检测,能动态增长。 使用向量类的基本条件 必须在文件开始包含如下代码 #include vector 必须定义vector类对象,方式是在变量声明时写如下代码 vector 操作数据类型 对象名[(结点个数[,结点中数据成员的初始值])] 例如 vector int v1(10); vector double v2; vector string v3(10, “ok!); vector string v4(v3); (2)STL中的链表list 链表类 支持对链表中结点进行插入与删除操作。操作可以发生在:表尾或表头。 使用链表类的基本条件 必须在文件开始包含如下代码 #include list 必须定义list类对象,方式是在变量声明时写如下代码 list 操作数据类型 对象名[(结点个数[,结点中数据成员的初始值])] 例如 list int mylist1; list double mylist2(10,2.8); list string mylist3(10); vector类和list类的共同操作 vector特有的操作 vector和list类中的迭代器相关的操作 vector的使用举例 #include string.h #include iostream.h #include vector using namespace std; void main(){ vector int v1(10); //定义整型顺序表,结点数为10 vector double v2; //定义双精度顺序表,空表 vector double v3(10,10.2);//定义双精度顺序表,结点数为10,初值=10.2 vector double v4(v3);//定义双精度顺序表,赋值v3的值 vector char v5;//定义字符顺序表,空表 char c; v1[1]=2;//v1[1]赋值为1 v1.at(2)=45;//给v1[2]赋值45 for (int i=0; i9; i++) {//给v2添8个结点 v2.
您可能关注的文档
- 10计算机系统结构(第十讲)01.ppt
- 10讲§2.5 定位误差的分析计算 (4)§2.6定位方案设计.ppt
- 10量与单位.ppt
- 10面向对象分析.ppt
- 10汽车总线路.ppt
- 10-日本横河CS3000 DCS系统结构及硬件介绍.ppt
- 10-设计模式本质.ppt
- 10升本烷烃(环)2.ppt
- 10时序逻辑电路引论.ppt
- 10实施.ppt
- 2025年国家开放大学《历史学(9)》期末考试复习试题及答案解析.docx
- 2025年政府数字化服务平台创新项目可行性研究报告.docx
- 2025年儿童智能陪伴机器人开发项目可行性研究报告.docx
- 2025年城市农贸市场升级改造可行性研究报告.docx
- 2025年国家开放大学《心理咨询专业入门》期末考试复习题库及答案解析.docx
- 2025年精准扶贫智能数据平台可行性研究报告.docx
- 2025年特色文创产品开发可行性研究报告.docx
- 2025年国家开放大学《法律基础与实务》期末考试备考题库及答案解析.docx
- 2025年国家开放大学《教育社会学导论》期末考试参考题库及答案解析.docx
- 2025年国家开放大学(电大)《网络安全基础》期末考试复习试题及答案解析.docx
原创力文档


文档评论(0)