- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8 类模板和容器vector
算法与数据结构 类模板 -- 容器 向量vector容器 回顾一下:什么是函数模板? 是对不同数据类型通用的函数,函数模板处理的数据类型是用参数T表示的 它是在函数定义前面加上一句 template typename T 函数模板定义的函数像普通的函数一样调用,只需给出具体类型的实参即可,编译器在编译时会用具体的实参生成普通函数的代码 问题的提出 大家知道,可以有各种数据类型的数组,系统内置的数组使用起来有很多不足 如:数组不能直接赋值 数组下标越界不给出错误提示 数组大小固定 我们可不可以定义一个数组类, 让它具有内置数组的功能,再弥补上述缺陷 class array{ private: 数据 } 可以,必须要考虑它的数据类型,岂不是要针对不同的数据类型定义不同的数组类,no 类模板 template typename T class array{ 含有数据类型T的数据成员和成员函数 array(int s=10); void function(); … T *data; int size; }; 在类定义外部的每个成员函数都是函数模板 template typename T arrayT::class_name() { … } template typename T void arrayT::function() { } … arrayT:: 每个函数用类模板作用域 注意:类模板的定义和各个成员函数的模板定义要放在同一个array.h文件中,不要再有一个array.cpp文件 如果是分离建立的array.h 和 array.cpp, 在使用的时候用#includearray.cpp即可 模板在要实例化之后生成代码再编译 使用类模板创建对象 要用实际数据类型的参数去特化类模板 #include“array.h” int main() { arrayint a(100); //100个元素的整型数组 arrayfloat b; //默认10个元素的实型数组 … } 例 存储store类模板(存储的数据用参数T表示) #ifndef STORE_CLASS #define STORE_CLASS #include iostream using namespace std; template typename T class store { public: store(const T item = T() ); //默认实参:T的默认构造函数 T getValue() const; // return value void setValue(const T item); // update value friend ostream operator (ostream ostr, const storeT obj) { ostr Value = obj.value; return ostr; } private: T value; }; 一般的线性表、队列、堆栈、树、图等数据结构都是与数据类型无关的,既可以有任意类型数据形成这些数据结构 因此它们都可以定义成类模板 C++标准模板库STL (standard template library)中已经定义实现了部分数据结构的类模板 在这个库中称为容器container STL容器概述 STL包含10个容器,分为三种 顺序容器(线性的)向量vector、双端队列deque、表list 适配器容器(通过已有的容器进行适当裁剪而成):栈stack、队列queue、优先队列(priority queue) 关联容器(数据的位置与数据值有关): 集合set,多重集合multiset,映射map,多重映射multimap 向量容器vector 数组的元素是同类型的,彼此连续存储,下标随机访问,数组的大小是固定的 数组作为函数的参数通常还要有一个数组大小size参数 例如 int sum( int a[ ], int size); 向量vector 容器是一个基于模板的类, 它有一个模板参数T 用vectorT定义的对象v它有数组的特征 即允许向量对象v使用下标访问它的元素 即v[0], …, v[v.size()-1] 但是它的大小不固定,可以任意改变,
您可能关注的文档
最近下载
- Rexroth lndraMotion MTX micro简明调试手册04版本.pdf VIP
- 海南省“三医联动一张网”项目建设工程招标(简称:海南省三医联动信 息平台)第三章用户需求书.PDF VIP
- 客户经理业绩考核分析系统数据库设计说明.doc
- 必威体育精装版人教版一年级上册数语文同步练习册及单元试卷.doc VIP
- 人教版高中物理高考总复习全册知识点考点梳理、重点题型分类巩固练习提高版.doc VIP
- 人教版高中物理必修3基础知识自测小纸条(含答案及解析).pdf VIP
- GB50575-2010 1Kv及以下配线工程施工与验收规范.pdf VIP
- 食源性疾病事件应急处置桌面推演脚本.doc VIP
- 智慧校园智能学习环境对城市初中生创新思维培养的实证研究教学研究课题报告.docx
- 人教版高中物理选修3-5全册知识点考点梳理、重点题型分类巩固练习提高版.doc VIP
文档评论(0)