第19章 c超值放送 标准库 c教学用ppt 教学课件

上传人:bin****86 文档编号:55735635 上传时间:2018-10-05 格式:PPT 页数:73 大小:216.50KB
返回 下载 相关 举报
第19章 c超值放送 标准库 c教学用ppt 教学课件_第1页
第1页 / 共73页
第19章 c超值放送 标准库 c教学用ppt 教学课件_第2页
第2页 / 共73页
第19章 c超值放送 标准库 c教学用ppt 教学课件_第3页
第3页 / 共73页
第19章 c超值放送 标准库 c教学用ppt 教学课件_第4页
第4页 / 共73页
第19章 c超值放送 标准库 c教学用ppt 教学课件_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《第19章 c超值放送 标准库 c教学用ppt 教学课件》由会员分享,可在线阅读,更多相关《第19章 c超值放送 标准库 c教学用ppt 教学课件(73页珍藏版)》请在金锄头文库上搜索。

1、标准库概述 迭代器 算法 函数对象 适配器 字符串库,第19章 C+超值放送 标准库,标准库概述迭代器算法 函数对象 适配器 字符串库,第19章 C+超值放送 标准库,标准库概述 迭代器算法 函数对象 适配器 字符串库,第19章 C+超值放送 标准库,标准库概述 迭代器算法 函数对象 适配器 字符串库,第19章 C+超值放送 标准库,标准库概述 迭代器算法函数对象适配器 字符串库,第19章 C+超值放送 标准库,标准库概述 迭代器算法函数对象适配器 字符串库,第19章 C+超值放送 标准库,标准库概述 迭代器算法函数对象适配器 字符串库,第19章 C+超值放送 标准库,19.1 标准库概述,1

2、9.1.1 认识标准库 19.1.2 标准库的组成,ASP.NET 3.5 网站开发从入门到精通,19.1.1 认识标准库,C+标准分为两部分: C+语言本身。 C+标准库。,19.1.2 标准库的组成,C+标准库中的组件,19.2 迭代器,可以把迭代器看作是一个容器所使用的特殊指针,用来 存取容器内存储的数据。 迭代器定义的格式。iterator 迭代器变量名;迭代器有5种,分别是输入、输出、向前、双向以及随 机存取。,每一种容器都定义了自己的迭代器,各个容器迭代器的功能也不尽相同。,下表列出了迭代器对容器中的数据进行的主要操作, 其中iter和iter1表示迭代器。,【范例19-1】 使用

3、迭代器输出vector容器的元素值。,19.3 算法,算法(Algorithm)是STL的一个重要组成部分,它提 供了数据处理函数。算法是利用模板函数技术构建的。STL包含了大约70个通用算法,用于操作各种容器。 19.3.1 数据编辑算法 19.3.2 查找算法 19.3.3 比较算法 19.3.4 排序相关算法 19.3.5 计算相关算法,19.3.1 数据编辑算法,1. fill:用给定值初始化一个范围。 使用格式如下: template void fill ( ForwardIterator first, ForwardIterator last, const T 说明:用value填

4、充容器first,last)范围。,2. copy:用于容器之间数据的复制。 使用格式如下: template OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result ); 说明:复制容器first,last)范围内的元素到另一个容器的以result为起始的指定位置处。 返回值:返回值是迭代器类型,它指向新复制容器的末尾。,3. merge :用于将两个已排序的序列合并为第三个序列。 使用格式如下: template OutputIterator merge (InputIterat

5、or1 first1,InputIterator1 last1,InputIterator2 first2,InputIterator2 last2,OutputIterator result); 说明:将容器1的first1、last1)范围内的对象与容器2的first2、 last2)范围内的对象合并后的有序序列存放在以result为起始的指定位置处,容器1的数据在前。 返回值:函数返回一个迭代器,它指向合并后的结果容器的末尾。,4. remove:用于移除容器某一范围的数据。 使用格式如下: template ForwardIterator remove (ForwardIterator

6、 first, ForwardIterator last, const T 说明:移除first,last)范围内的值是value的所有元素。 返回值:返回容器新末端的迭代器。,5. replace:用于将容器某范围内的替换。 使用格式如下: template void replace(ForwardIterator first, ForwardIterator last, const T 说明:将first,last)范围内的元素值old_value用 new_value来替换。 【范例19-2】 数据编辑算法的使用。,19.3.2 查找算法,1. find:用于在某范围内查找数据。 使用格

7、式如下: template InputIterator find (InputIterator first, InputIterator last, const T 说明:在容器v1的 first1,last1) 范围内查找value是否出现。 返回值:返回值是迭代器类型,如果找到该数据,指向该数据在容器中第一次出现的位置;否则指向结果序列的尾部,2. search:用于两个范围的查找。使用格式如下: template ForwardIterator1 search (ForwardIterator1 first1,ForwardIterator1 last1, ForwardIterator

8、2 first2, ForwardIterator2 last2 ); 说明:在容器first1,last1)范围内查找另一容器first2,last2)范围是否存在。 返回值:返回值是迭代器类型,如果找到该数据,指向该范围在容器中第一次出现的位置;否则,它指向结果序列的尾部。 【范例19-3】 查找算法的使用。,19.3.3 比较算法,1. equal:比较两个范围内的数据是否相等。 使用格式如下: template bool equal (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2 ); 说明:判断容器

9、1的first1、last1)范围内的对象序列是否与另一容器以first2开始的对象序列对应相等。 返回值:相等返回true,否则返回false。,2. Mismatch:比较两个范围是否相等。 使用格式如下: template pairmismatch(InputIterator1 first1,InputIterator1 last1,InputIterator2 first2 ); 说明:判断容器1的first1、last1)范围内的对象序列是否与另一容器以first2开始的对象序列对应相等。 返回值:返回一个pair类对象。 【范例19-4】 比较算法的使用。,19.3.4 排序相关算

10、法,1. Sort:对容器中的数据进行排序。 使用格式如下: template void sort(RandomAccessIterator first,RandomAccessIterator last); 说明:对容器中 first、last) 范围内的对象进行排序,默认为升序排序。,2. reverse:对容器内的数据进行反转。 使用格式如下: template void reverse(BidirectionalIterator first,BidirectionalIterator last); 说明:对容器中 first、last) 范围内的对象进行反转。,3. swap:交换两个

11、数据的值。 使用格式如下: template void swap ( T 说明:交换对象a和b的值。 【范例19-5】 排序相关算法的使用。,19.3.5 计算相关算法,1. count:计算容器中满足给定条件的元素的个数。 使用格式如下: template typename iterator_traits :difference_type count(ForwardIterator first,ForwardIterator last,const T 说明:查找对象value在first、last)范围内出现的次数。 返回值:返回出现的次数。,2. max_element和min_eleme

12、nt 计算容器中最大值和最小值。使用格式如下: template ForwardIterator max_element (ForwardIterator first,ForwardIterator last ); template ForwardIterator min_element(ForwardIterator first,ForwardIterator last ); 说明:查找在first、last)范围内的最大值和最小值。 返回值:返回最大值和最小值。,3. transform 将操作应用到集合中的一系列值并且存储结果。 使用格式如下: template OutputIterat

13、or transform(InputIterator first1,InputIterator last1,OutputIterator result, UnaryOperator op); 说明:对first、last)范围内的对象进行op操作,并把结果保存到以result开始的容器里。 返回值:函数返回一个迭代器,它指向结果序列的尾部。,4. for_each:将函数应用于范围内的每个元素。 使用格式如下: template Function for_each (InputIterator first, InputIterator last, Function f); 说明:对first、

14、last)范围内的所有对象都使用f来处理。 返回值:返回值的类型与f函数相同。 【范例19-6】 计算相关算法的使用。,19.4 函数对象,19.4.1 函数对象的应用 19.4.2 自定义函数对象,19.4.1 函数对象的应用,函数对象是一个由模板类产生的对象,该模板类只有一 个用于重载的operator()函数。在算法中使用函数对象方法是,先通过调用带数据类型 的默认构造函数,建立一个函数对象,然后就可以在容器 或算法使用该函数对象。函数对象使用的数据类型必须与容器所容纳的数据类型 相同。 如:vector(string string ,greater() );sort(v1.begin(

15、),v1.end(),greater() );,STL提供的函数对象如下表所示。,19.4.2 自定义函数对象,自定义函数对象的使用有两种形式,一是建立函数对象 类,二是建立模板函数对象类。 1. 建立函数对象类 将【范例19-6】的square写成函数对象类,如下。 class square1 public: operator( ) (int i)return i*i; /数据类型为int ,2. 建立模板函数对象类 将【范例19-6】的square写成函数对象类,如下。 Template class square2 public: operator( ) (t1 i)return i*i;

16、 /数据类型为t1 ,自定义函数对象建立后,该函数对象的使用和系统的函 数对象的使用相同。 它们的使用形式如下。 transform (v1.begin(),v1.end(), v2.begin(), square1() ); /使用函数对象类。这里没有数据类型,原因是square1已经被说明为int类型了。 transform (v1.begin(),v1.end(), v2.begin(), square2()); /使用模板函数对象类。这里需要带数据类型。,19.5 适配器,适配器和顺序容器相结合,提供了堆栈、队列和优先 队列的功能。适配器有三种类型:容器适配器、迭代器适配器和函 数对象适配器。本书以容器适配器为例。 19.5.1 容器适配器 19.5.2 stack容器,19.5.1 容器适配器,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号