C++程序设计--对象分册(第7章)..ppt

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

* * 7.5算法(Algorithm) 7.5.1算法和函数对象 广义上讲,算法是一个按照一组定义明确的步骤来解决某个问题的处理过程。 所有算法的前两个变量都是一对迭代器,通常称为首(first)和末(last)迭代器,用来表明算法对容器进行操作的元素范围。元素范围是一个区间——[fist, last),它表示范围从first(包含first指向的元素)开始,到last结束(不包含last指向的元素) 函数对象是函数的一般形式。实际上函数对象是一个重载了operator()的类。 * * 7.5.2 算法分类介绍 STL提供了70个算法,按照不同的分类方法可以将这些算法分成不同的类别: (1)按照算法所做工作的不同,可以将算法分成8个种类:查找、排序、数值计算、比较、集合、容器管理、统计和堆操作。 (2)按照算法对容器的影响,可以将算法分成4个种类:非修正算法、修正算法、排序算法和数值计算算法。 * * 7.5.2 算法分类介绍 1.非修正算法 非修正算法的操作不对变容器中的元素进行任何修改,这类算法包括adjacent_find()、find()、find_end()、find_first()、count()、mismatch()、equal()、for_each()和search()等,这些算法都包含在头文件algorithm中。 【例7.8】非修正算法例题。 * * 7.5.2 算法分类介绍 2.修正算法 在实际应用中,经常需要对容器中的元素进行修改和写操作,这类能够对容器中元素进行修改的算法称为修正算法。修正算法包括copy()、copy_backward()、fill() 、generate()、partition()、random_shuffle()、remove()、replace()、rotate()、reverse()、swap()、swap_ranges()、transform()和unique()等 【例7.9】修正算法例题。 * * 7.5.2 算法分类介绍 3.排序算法 对于一个序列来说,排序是最经常进行的操作,也是最重要的操作。由于排序需要移动元素,因此排序算法用到的迭代器都是随机存取迭代器。排序算法包括sort()、stable_sort()、partial_sort()、partial_sort_copy()、nth_element()、binary_search()、lower_bound()、upper_bound()、equal_range()、merge()、includes()、push_heap()、pop_heap()、make_heap()、sort_heap()、set_union()、set_intersection()、set_difference()、set_symmetric_difference()、min()、min_element()、max()、max_element()、lexicographica;_compare()、next_permutation()和prev_permutation()等。 【例7.10】排序算法例题 * * 7.5.2 算法分类介绍 4.数值计算算法 数值计算算法主要是对容器中的元素进行数值计算。这类算法包括accumulate()、inner_product()、partial_sum()、adjacent_difference()和一些推广的数值算法。 * * * * * #include iostream.h void main( ) { char ch; cinch; ch=(ch=A ch=Z)?(ch+32):ch; //判别ch是否大写字母,是则转换 coutchendl; } * template class T, class A = allocatorT class vector { public: //构造函数 vector();//构造一个空的被控序列 vector(size_type n, const T x); // 构造一个由n个值为x的元素组成的序列 vector(const vector x); // 构造一个由x控制序列的拷贝 //常用函数 iterator begin(); //返回指向序列中第一个元素双向迭代器 iterator end();//返回指向序列末端下一个位置的双向迭代器 size_type size() const; //返回序列的长度 bool empty() const; //序列为空返回true,否则返回false

文档评论(0)

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

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

1亿VIP精品文档

相关文档