[杂谈] 3.#include algorithm 用法用途

#include<algorithm>是在做OJ的时候无可避免、提高速度、堪称利器的头文件。algorithm意为算法,该头文件为我们提供了多种便利的算法函数,程序开头加上这个头文件,就可以直接调用里面的函数了,不用再自己手写。但是一些复杂的算法还是要自己写的。另外可以看看cplusplus对其的官方解释 http://www.cplusplus.com/reference/algorithm/

下面是搜集到的一些#include<algorithm>下的操作: 

 非修改性序列操作(12个)
循环对序列中的每个元素执行某操作for_each()
查找在序列中找出某个值的第一次出现的位置find()
在序列中找出符合某谓词的第一个元素find_if()
在序列中找出一子序列的最后一次出现的位置find_end()
在序列中找出第一次出现指定值集中之值的位置find_first_of()
在序列中找出相邻的一对值adjacent_find()
计数在序列中统计某个值出现的次数count()
在序列中统计与某谓词匹配的次数count_if()
比较找出两个序列相异的第一个元素mismatch()
两个序列中的对应元素都相同时为真equal()
搜索在序列中找出一子序列的第一次出现的位置search()
在序列中找出一值的连续n次出现的位置search_n()
 修改性序列操作(27个)
复制从序列的第一个元素起进行复制copy()
从序列的最后一个元素起进行复制copy_backward()
交换交换两个元素swap()
交换指定范围的元素swap_ranges()
交换由迭代器所指的两个元素iter_swap()
变换将某操作应用于指定范围的每个元素transform()
替换用一个给定值替换一些值replace()
替换满足谓词的一些元素replace_if()
复制序列时用一给定值替换元素replace_copy()
复制序列时替换满足谓词的元素replace_copy_if()
填充用一给定值取代所有元素fill()
用一给定值取代前n个元素fill_n()
生成用一操作的结果取代所有元素generate()
用一操作的结果取代前n个元素generate_n()
删除删除具有给定值的元素remove()
删除满足谓词的元素remove_if()
复制序列时删除具有给定值的元素remove_copy()
复制序列时删除满足谓词的元素remove_copy_if()
唯一删除相邻的重复元素unique()
复制序列时删除相邻的重复元素unique_copy()
反转反转元素的次序reverse()
复制序列时反转元素的次序reverse_copy()
环移循环移动元素rotate()
复制序列时循环移动元素rotate_copy()
随机采用均匀分布来随机移动元素random_shuffle()
划分将满足某谓词的元素都放到前面partition()
将满足某谓词的元素都放到前面并维持原顺序stable_partition()
 序列排序及相关操作(27个)
排序以很好的平均效率排序sort()
排序,并维持相同元素的原有顺序stable_sort()
将序列的前一部分排好序partial_sort()
复制的同时将序列的前一部分排好序partial_sort_copy()
第n个元素将第n各元素放到它的正确位置nth_element()
二分检索找到大于等于某值的第一次出现lower_bound()
找到大于某值的第一次出现upper_bound()
找到(在不破坏顺序的前提下)可插入给定值的最大范围equal_range()
在有序序列中确定给定元素是否存在binary_search()
归并归并两个有序序列merge()
归并两个接续的有序序列inplace_merge()
有序结构上的集合操作一序列为另一序列的子序列时为真includes()
构造两个集合的有序并集set_union()
构造两个集合的有序交集set_intersection()
构造两个集合的有序差集set_difference()
构造两个集合的有序对称差集(并-交)set_symmetric_difference()
堆操作向堆中加入元素push_heap()
从堆中弹出元素pop_heap()
从序列构造堆make_heap()
给堆排序sort_heap()
最大和最小两个值中较小的min()
两个值中较大的max()
序列中的最小元素min_element()
序列中的最大元素max_element()
词典比较两个序列按字典序的第一个在前lexicographical_compare()
排列生成器按字典序的下一个排列next_permutation()
按字典序的前一个排列prev_permutation()

 该算法库确实集成了大多的常见算法,能够极大提高生产力。建议在接触初期可以自行手动实现其功能或者阅读源代码理解其中含义,不建议直接套用不求甚解。还是要扎扎实实走好每一步的。

  • 33
    点赞
  • 152
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ypuyu

如果帮助到你,可以请作者喝水~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值