- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 C++标准模板库 主要内容 泛型程序设计 与标准模板库有关的概念和术语 C++标准模板库中的容器 迭代器 标准C++库中的算法 函数对象 泛型程序设计 将程序写得尽可能通用 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 STL是泛型程序设计的一个范例 容器(container) 迭代器(iterator) 算法(algorithms) 函数对象(function object) 命名空间(Namespace) 一个命名空间将不同的标识符集合在一个命名作用域(named scope)内 为了解决命名冲突 例如,声明一个命名空间NS: namspace NS { class File; void Fun (); } 则引用标识符的方式如下, NS:: File obj; NS:: Fun (); 没有声明命名空间的标识符都处于无名的命名空间中 命名空间(Namespace) 可以用using来指定命名空间 例如,经过以下声明:using NS::File;在当前作用域中就可以直接引用File using namespace std;命名空间std中所有标识符都可直接引用 在新的C++标准程序库中,所有标识符都声明在命名空间std中,头文件都不使用扩展名 容器 容器类是容纳、包含一组元素或元素集合的对象。 异类容器类与同类容器类 顺序容器与关联容器 七种基本容器: 向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap) 容器的接口 通用容器运算符 ==,!=,,=,,=,= 方法(函数) 迭代方法 begin(),end(),rbegin(),rend() 访问方法 size(),max_size(),swap(),empty() 适配器 适配器是一种接口类 为已有的类提供新的接口。 目的是简化、约束、使之安全、隐藏或者改变被修改类提供的服务集合。 三种类型的适配器: 容器适配器 用来扩展7种基本容器,它们和顺序容器相结合构成栈、队列和优先队列容器 迭代器适配器 函数对象适配器。 迭代器 迭代器是面向对象版本的指针,它们提供了访问容器、序列中每个元素的方法。 算法 C++标准模板库中包括70多个算法 其中包括查找算法,排序算法,消除算法,记数算法,比较算法,变换算法,置换算法和容器管理等等。 这些算法的一个最重要的特性就是它们的统一性,并且可以广泛用于不同的对象和内置的数据类型。 顺序容器 顺序容器的接口 插入方法 push_front(),push_back(),insert(),运算符“=” 删除方法 pop() ,erase(),clear() 迭代访问方法 使用迭代器 其它顺序容器访问方法(不修改访问方法) front(),back(),下标[]运算符 顺序容器——向量 向量属于顺序容器,用于容纳不定长线性序列(即线性群体),提供对序列的快速随机访问(也称直接访问) 向量是动态结构,它的大小不固定,可以在程序运行时增加或减少。 例10-1 求范围2~N中的质数,N在程序运行时由键盘输入。 //10_1.cpp #include iostream #include iomanip #include vector //包含向量容器头文件 using namespace std ; int main() { vectorint A(10); int n; int primecount = 0, i, j; coutEnter a value=2 as upper limit: ; cin n; A[primecount++] = 2; for(i = 3; i n; i++) { if (primecount == A.size()) A.resize(primecount + 10); if (i % 2 == 0) continue; j = 3; while (j = i/2 i % j != 0) j += 2; if (j i/2) A[primecount++] = i; } for (i = 0; iprimecount; i++)//输出质数 { coutsetw(5)A[i]; if ((i+1) % 10 == 0) //每输出10个数换行一次 cout endl; } coutendl; } 顺序容器——双端队列 双端队列是一种放松了访问权限的队列。元素
您可能关注的文档
最近下载
- TBIE 004—2023通孔回流焊接技术规范团标.pdf
- 国开《MySQL数据库应用》形考1-4(试题及答案).pdf VIP
- 煤矿安全生产作业规程操作规程安全技术措施编制审批贯彻及执行管理制度.doc
- 2020年光学膜行业研究报告.pdf
- 采血管种类和应用ppt课件.pptx VIP
- 职业生涯报告六篇.pdf VIP
- Unit 4 Plants arounds us PartA Let's talk(课件)人教PEP版(2024)英语三年级上册.pptx
- 七年级上册生物:必考问答式知识点汇总(背诵+默写).docx
- 《青纱帐——甘蔗林》课件【中职专用】高教版 基础模块下册.pptx
- 国家开放大学学位英语历年真题试卷号1909.docx
文档评论(0)