首页 > 其他分享 >algorithm库的使用

algorithm库的使用

时间:2023-06-11 11:33:51浏览次数:43  
标签:begin end 函数 algorithm 使用 bound permutation cmp

算法库(algorithm)

1. 什么是algorithm?

algorithm库装满了好用的库函数,一般由#include <algorithm>包含。可是本蒻蒻还是喜欢万能头(逃

2. 经典的库函数

(1) sort()函数

sort(begin, end, cmp);

这个函数有一些技术含量,但它只需要传入两个指针或随机迭代器(begin 和 end)和cmp比较方式,默认可以不填,即从小到大排序,可是当你需要从大到小排序或需要按照一定规则排序结构体时,你便需要这个cmp了。

比如这是一个cmp函数的例子:

bool cmp(student a, student b) {
	return a.score > b.score;
}

记住,在传参时,只要传入cmp即可。

(2) reverse()函数

reverse(begin, end);

这个函数相对于上一个要简单多了,只要传入两个指针或随机迭代器(begin 和 end)就可以了,它可以实现对容器的翻转。

(3) next_permutation() 和 prev_permutation()

next_permutation(begin, end, cmp);
prev_permutation(begin, end, cmp);

这是一对全排列函数,需要传入两个指针或随机迭代器(begin 和 end),next_permutation 返回 bool类型,即有没有下一个全排列,如果有,则将容器换到下一个全排列。同样,prev_permutation 返回的是有没有上一个全排列,用法也是一样的。但是这里的cmp其实没有太大作用,因为如果想用反向全排列,只要用另一个permutation函数就行了。

(4) upper_bound() 和 lower_bound()

upper_bound(begin, end, x);
lower_bound(begin, end, x);

这一对函数便是熟悉的二分查找。upper_bound 找右边界,另一个找左边界。这个函数的返回值是一个指针,即对应元素的位置。

3.配套例题

\(\color{orange}P1088\)

\(\color{orange}P1177\)

\(\color{yellow}P5250\)

\(\color{red}B2122\)

点个赞呗

标签:begin,end,函数,algorithm,使用,bound,permutation,cmp
From: https://www.cnblogs.com/atronomia/p/17472722.html

相关文章

  • 使用 dom4j 解析 XML
    http://www.ibm.com/developerworks/cn/xml/x-dom4j.html创建文档本节讨论使用dom4jAPI创建XML文档的过程,并创建示例XML文档catalog.xml。使用import语句导入dom4jAPI类:1.importorg.dom4j.Document;2.importorg.dom4j.DocumentHelper;3.importorg.dom4j.......
  • git subtree的使用简介
    1、gitsubtree的使用简介gitsubtree是一个Git命令,用于在单个Git仓库中管理多个项目。它允许您将一个项目的子目录作为独立的Git仓库处理,同时仍然保持在主仓库中。这使得在不使用子模块的情况下,更容易地将多个项目组合在一个仓库中。以下是gitsubtree的一些常见用法:添加子树......
  • Linux下六个有关file使用的实例
    FILE命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。本文介绍Linux下的六个有关file的实例。简介file的官方解释为:file - determine file type也就是说可以识别文件......
  • 如何使用https://work.weixin.qq.com/ca/xxxxx来跳转企业微添加好友?
    工作微信是一款由腾讯公司开发和提供的企业级通信和协作平台。它是基于腾讯QQ和微信的技术基础,专为企业内部通信和协作需求而设计的。工作微信的来源可以追溯到腾讯的战略发展和市场需求。腾讯在观察到企业内部通信和协作的需求日益增长后,决定开发一款专门针对企业用户的通信平台。......
  • Avalonia如何快速使用Prism进行MVVM开发,实现Prism区域导航功能
    新建ViewA和ViewB以及他的ViewModel 创建View和WPF开发是一样的,创建UserControl,注意avalonia里面需要指定DataType的类型。 创建ViewModel,这里面和开发WPF是一模一样的 到App里面取注册Region  到Window里面取写好界面,创建一个Region用于导航 MainWindowVie......
  • 面试官:在项目中,你是如何使用线程池的?
    大家好,我是田哥前两天,有位星友(知识星球里的朋友简称)私信我,问在项目中如何使用线程池,关于线程池的原理和八股文相关的都可以背,但是要是问到你们项目中是怎么用的,心里总是有点慌。公众号里回复77,获取面试小抄和面试相关资源:话不多说,我们直接步入正题。创建线程池的方式我在这篇文章......
  • Avalonia如何快速使用Prism进行MVVM开发
    Avalonia版本:RC1.1Prism.Avalonia版本:8.1.97.11000-rc1.1创建Avalonia模板  如果没有RC1.1模板的取看下官网文档,更新一下模板的版本GettingStarted-AvaloniaUI 进入App.axaml.cs文件修改,将App的继承由Application改为PrismApplication,实现prism里面的抽象 到......
  • 使用GithubAction自动构建部署项目
    目录1.1项目准备2.1GithubAction设置3.1运行测试4.1小结GitHubActions是一种持续集成和持续交付(CI/CD)平台,可用于自动执行生成、测试和部署管道。您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。GitHubActions不仅仅是DevOps,还......
  • nas使用docker部署alist​
    一、下载镜像xhofe/alist:latest二、创建容器第一行:文件/文件夹:此处填写在nas上事先创建好的目录位置装载路径:/opt/alist/data类型选读写启动容器,检查日志是否有报错项。如没有报错,容器应该为运行中的状态。三、打开alist页面点击快捷方式查看应用网址打开alist登录页面http://192......
  • vue3的composition API如何使用async语句
    问题:在setup使用aysnc,生命函数钩子和函数必须出现在await语句前面,否者会出现组件无法渲染以及内存泄漏的问题。import{ref,watch,onMounted,onUnmounted}from'vue'exportdefaultdefineAsyncComponent({asyncsetup(){constcounter=ref(0......