C++第8章模板.ppt

  1. 1、本文档共134页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STL算法主要由头文件algorithm、numeric和functional组成: “algorithm”是所有STL头文件中最大的一个,它是由很多函数模板组成的。可以认为每个函数模板在很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历、赋值、修改、移动、移除、反转、排序、合并等。如果使用这些函数模板,要在头文件中包含algorithm。 §8.4.3 算法 STL算法主要由头文件algorithm、numeric和functional组成: “numeric”体积很小,只包括几个在序列上面进行简单数学运算的函数模板,包括加法和乘法在序列上的一些操作。 “functional”中则定义了一些类模板,用以声明函数对象。 §8.4.3 算法 //STL演示程序:输入--排序--输出 #include iostream #include string //用于人机界面交互 #include vector //为了使用vector容器 #include algorithm //为了使用sort算法 #include iterator //为了使用输入输出迭代器 using namespace std; STL中的copy算法和sort算法应用的例子 §8.4.3 算法 int main(void) { typedef vectorint IntVector; typedef istream_iteratorint IstreamItr; typedef ostream_iteratorint OstreamItr; typedef back_insert_iterator IntVector BackInsItr; // STL中的vector容器 IntVector num; //从标准输入设备读入整数,直到输入的是非整型数据为止 cout 请输入整数序列,按任意非数字键并回车结束输入\n; copy(IstreamItr(cin), IstreamItr(), BackInsItr(num)); §8.4.3 算法 //提示程序状态 cout 排序中……\n; // STL中的排序算法 sort(num.begin(), num.end()); cout排序完毕的整数序列:\n; copy(num.begin(), num.end(), OstreamItr(cout, \n)); //使输出窗口暂停以观察结果 system(pause); return 0; } §8.4.3 算法 本章内容勘误 1. P219 【例8-7】的程序代码的第8行、第9行中两个“”全部修改为““。 2. P233 从上面数第3行: 30,40,50,60,70,80,90,100 修改为: 30 40 50 60 70 80 90 100 3.编写一个顺序表类模板。 4. 编写一个单链表类模板。 * * 容器是容纳、包含一组元素或元素集合的对象。不管是C++内建的基本数据类型或是用户自定义的类类型的数据,都可以存入STL的容器中。 §8.4.1 容器 注意:如果存储在容器中的元素的类型是用户自定义的类类型,那么至少要为该类提供默认的构造函数、析构函数和赋值运算符函数。一些编译器还需要重载一些关系操作符函数(至少需要重载= =和,还可能需要重载!=和),即使程序并不需要用到它们。另外,如果用户自定义的类中有指针数据成员,还必须提供复制构造函数和函数operator=,因为插入操作使用的是插入元素的一个副本,而不是元素本身。 §8.4.1 容器 STL容器按存取顺序大致分为两种: 序列(sequence)容器与关联(associative)容器。 序列容器主要包括vector(向量)、list(表)、deque(双端队列)、stack(栈)、queue(队列)、priority_queue(优先队列)等。其中,stack和queue由于只是将deque改头换面,其实是一种容器适配器,但它的用途在软件领域比deque广泛。priority_queue也是一种容器适配器。序列容器中只能包含一种类型的数据元素,而且各元素的排列顺序完全按照元素插入时的顺序。 §8.4.1 容器 关联容器主要包括set(集合)、multiset(多重集合)、map(映射)、multimap(多重映射),可以存储值的集合或键值对。键是关联容器中存储在有序序对中的特定类型的值。map和multimap存储和操作的是键和与键相关的值,其元素是有关联的键,值数据对。set和multiset存储和操

文档评论(0)

jz6501 + 关注
内容提供者

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

1亿VIP精品文档

相关文档