C++标准教程06-5.算法和函数对象.ppt

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C标准教程06-5.算法和函数对象

1-* 北京源智天下科技有限公司 联系方式: 联系方式: 北京源智天下科技有限公司 算法和函数对象 STL通用算法调用形式 不可变序列算法 可变序列算法 函数对象 STL通用算法调用形式 根据算法的语义,STL标准模板库中的算法大致可以分为4类。第一类是非可变序列的算法,通常,这类算法在对容器进行操作时不会改变容器的内容;第二类是可变序列的算法,这类算法一般会改变它们所操作容器的内容。第三类是排序相关算法,包括排序算法和合并算法、二分查找算法以及有序序列的集合操作算法等;最后一类算法是通用数值算法,这类算法的数量比较少。 算法是C++标准模板库的另一个核心内容,每种算法又有各自的特点,不可能通过一个算法的应用来展示所有算法的应用特点。也就是说,读者了解了一种算法的应用,未必会在自己程序中应用其他算法。对于标准算法,关键不在于了解算法是如何设计的,而在于在自己的程序中如何应用这些算法。 不可变序列算法 不可变序列算法是指那些不直接修改所操作的容器内容的算法。这类算法包括在序列中查找元素的算法,执行相等检查的算法,以及对序列元素进行计数的算法。其中,查找算法有3个基本目的:在某种类型的集合或者容器中,查找某个元素的位置并返回查找结果;在某种类型的集合或容器中,查找某个元素并返回该元素或该元素的值;在某种类型的集合或容器中,查找某个元素并返回该元素是否在被查找的集合或容器中。该类算法的功能列表如下。 名称 功能 for_each 对区间内的每个元素进行某操作 find 循环查找 find_if 循环查找符合特定条件者 adjacent_find 查找相邻而重复的元素 find_first_of 查找某些元素的首次出现点 find_end 查找某个子序列的最后一次出现点 count 计数 count_if 在特定条件下计数 mismatch 找出不匹配点 equal 判断两个区间是否相等 search 查找某个子序列 search_n 查找连续发生n次的子序列 可变序列算法 可变序列算法可以修改它们所操作的容器元素。此类算法对序列容器的操作包括复制(copy)、生成(generate)、删除(remove)、替换(replace)、倒序(reverse)、旋转(rotate)、交换(swap)和变换(transform)、分割(partition)、剔除(unique)、填充(fill)、洗牌(shuffle)。这类算法中包含的通用算法的功能如下。 算法名称 功能 copy 复制区间所有元素 copy_n 复制区间中前n个元素 copy_backward 逆向复制区间中的元素 fill 用某一个数值替换区间中的所有元素 fill_n 用某一数值替换区间中的前n个元素 unique 查找并删除区间中连续相同的元素,使称为唯一 unique_copy 查找并删除区间中连续相等的元素,使成为唯一,并复制到别处 random_shuffle 随机重排区间元素 remove 删除区间中所有等于某数值的元素 remove_if 删除区间中所有忙着某条件的元素 remove_copy 删除某类元素并将结果复制到另一个容器 remove_copy_if 有条件地删除某类元素,并将结果复制到另一个容器 replace 替换某类元素 replace_copy_if 有条件地删除某类元素,并将结果复制到另一个容器 reverse 反转区间元素次序 reverse_copy 反转区间元素次序,将结果复制到另一个容器 rotate 旋转交替排列区间元素 rotate_copy 反转区间元素次序,将结果复制到另一个容器 swap 交换(对调)元素 iter_swap 元素互换 swap_ranges 交换两个区间中的元素 transform 以一个序列为基础,通过函数对象产生第二个序列,或以两个序列为基础,通过函数对象产生第三个序列 generate 连续调用函数对象,计算区间中元素的函数值,然后依次替换掉区间中的相应元素 generate_n 连续调用函数对象,计算区间中前n个元素的函数值,然后依次替换掉区间中的相应元素 partition 将满足函数对象关系的元素放置在不满足函数对象关系的元素之前,从而重新排列区间中的元素 stable_partition 将满足函数对象关系的元素放置在不满足函数对象关系的元素之前,从而重新排列区间中的元素,并保持元素的相对次序 函数对象 函数对象是STL提供的第四类主要组件,它使得STL的应用更加灵活方便,从而增加算法的通用性。大多数STL算法可以用一个函数对象作为参数。所谓“函数对象”其实就是一个行为类似函数的对象,它可以不需要参数,也可以带着若干参数,其功能是一获取一个值,或者改变操作状态。在C

您可能关注的文档

文档评论(0)

cgtk187 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档