STL源码剖析 笔记之六 算法

第六章 算法algorithms 
(这章这里先粗略读过,大体看懂源码就过,不会深究每个算法的实现细节,
回头再去研究数据结构与算法设计这本)
以有限的步骤,解决逻辑或数学上的问题,我们称为算法。
特定的算法往往搭配特定的数据结构。特定的数据结构是为了实现某种特定的算法。
决定算法所耗用的资源,包括空间和时间,这个操作称为算法分析。
STL算法总览
质变算法,是指运算过程中会更改区间内元素的内容的算法。
比如,拷贝,互换,替换,填写,删除,排列组合,分割,随机重排,排序等。
质变算法,是指运算过程中不会更改区间内元素的内容的算法。
比如,查找,匹配,计数,寻访,比较,寻找极值等。
所有泛型算法的前两个操作数都是一对迭代器(first和last,前闭后开)。
这个[first,last)区间的必要条件是,必须能经由累加操作,从first到达last。
许多STL算法不只支持一个版本,通常会有一个缺省版本, 另外的版本提供额外参数,接收外界传入的仿函数,以便采用其他策略。
我把它们称为缺省版和附带仿函数参数版。
有些算法干脆采用两个名称,用_if后缀来表示(采用传入的仿函数进行操作的版本)。
质变算法通常提供两个版本:
1.in-place版,就地改变其操作对象。
2.copy版,将操作对象的内容复制一份副本,然后在副本上进行修改并返回该副本。
copy版总以_copy作为后缀。并不是所有的质变算法都有copy版本。
数值算法实现于<stl_numeric.h>,使用时包含<numeric>。
其他算法实现于<stl_algo.h>和<stl_algobase.h>,使用时包含<algorithm>。
算法的泛化过程
把操作对象的型别加以抽象化,把操作对象的标示法和区间目标的移动行为抽象化,整个算法也就在一个抽象层面上工作了,整个过程称为算法的泛型化,简称泛化。
用end作为区间内最后一个元素的下一个(表示查找无结果),而不用NULL,是为了与其他容器一起组合带来泛型效果。
数值的传递用pass-by-value是为了减少传递成本。

数值算法  实现于<stl_numeric.h>
accumulate、 adjacent_difference、 inner_product、 partial_sum、 power、 itoa(SGI专属)
基本算法  实现于<stl_algobase.h>
equal、 fill、 fill_n、 iter_swap、 lexicographical_compare、 max、 min、 mismatch、 swap
copy、 copy_backward
set相关算法  实现于<stl_algo.h>
set_union、set_intersection set_difference set_symmetric_difference
heap算法  实现于<stl_head.h>,该头文件被包含在 <stl_algo.h>
make_heap、push_heap、pop_heap、sort_heap
其他算法    实现于<stl_algo.h>
1.单纯的数据处理
adjacent_find、count、count_if、find、find_if、find_end、find_first_of、for_each、
generate、 generate_n、includes(应用于有序区间)、max_element、merge (应用于有序区间) 、min_element、partition、remove、
remove_copy、remove_if、remove_copy_if、replace、replace_copy、replace_if、replace_copy_if、
reverse、reverse_copy、rotate、rotate_copy、search、search_n、swap_ranges、transform、 unique、unique_copy。
2.lower_bound (应用于有序区间)
二分查找的一种版本,返回一个迭代器,指向第一个不小于value的元素。如果找到的话,指向找到的这个位置。
3.upper_bound (应用于有序区间)
二分查找的一种版本,返回一个迭代器,指向“在不破坏顺序的情况下,可插入value的最后一个合适位置”。
如果找到的话,指向找到的这个位置的下一个位置。
4.binary_search (应用于有序区间)
是一种二分查找法。调用lower_bound。
5.next_permutation 下一排列
6.prev_premution    上一排列
7.random_shuffle    随机重排
8.partial_sort/ partial_sort_copy
9.sort
    Quick sort
    Inertion sort
    Heap sort
10.equal_range (应用于有序区间)
二分查找的一种版本
11.inplace_merge (应用于有序区间)
12.nth_element
13.merge sort

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值