C++ algorithm 头文件下的常用函数详解

2023-11-11

6.9 algorithm 头文件下的常用函数

​ 使用algorithm头文件

6.9.1 max()、min()和abs()

​ max(x, y)和min(x, y)分别返回x和y中的最大值和最小值

​ abs(x)返回x的绝对值,注意浮点型的绝对值请用math头文件下的fabs函数

6.9.2 swap()

​ swap(x, y)用来交换x和y的值

6.9.3 reverse()

​ reverse(it, it2)可以将数组指针在[it, it2)之间的元素或容器的迭代器在[it, it2)范围内的元素进行反转

#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int main(){
	int a[10] = {10, 11, 12, 13, 14, 15};
	reverse(a, a+4);
	for(int i =  0; i < 6; i++){
		cout<<a[i]<<' ';
	}
	return 0;
}
输出结果:
    13 12 11 10 14 15

6.9.4 next_permutation()

​ next_permutation()给出一个序列在全排列中的下一个序列

6.9.5 fill()

​ fill()可以把数组或容器中的某一段区间赋为某个区间相同的值

6.9.6 sort()

​ sort用来排序的函数

sort(首元素地址, 尾元素地址的下一个地址, 比较函数)前两个参数是必填项,第三个可根须需要填写

#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int main(){
	int a[6] = {9, 4, 2, 5, 6, -1};
	sort(a, a+3);
	for(int i = 0; i < 6; i++){
		cout<<a[i]<<' ';
	}
	cout<<endl;
	sort(a, a+6);
	for(int i = 0; i < 6; i++){
		cout<<a[i]<<' ';
	}
	return 0;
}
输出结果:
    2 4 5 9 6 -1
    -1 2 4 5 6 9

**第三个参数:**如何实现比较函数cmp?

#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
bool cmp(int a, int b){
	return a>b;
}
int main(){
	int a[6] = {9, 4, 2, 5, 6, -1};
	sort(a, a+4, cmp);
	for(int i = 0; i < 6; i++){
		cout<<a[i]<<' ';
	}
	cout<<endl;
	sort(a, a+6, cmp);
	for(int i = 0; i < 6; i++){
		cout<<a[i]<<' ';
	}
	return 0;
}
输出结果:
    9 5 4 2 6 -1
    9 6 5 4 2 -1

6.9.7 lower_bound()和upper_bound()

lower_bound(first, last, val)用来寻找在数组或容器的[first,last)范围内第一个值大于等于val的元素的位置,如果是数组,则返回该位置的指针,如果是容器则返回该位置的迭代器

upper_bound(first, last, val)用来寻找在数组或容器的[first,last)范围内第一个值大于val的元素的位置,如果是数组,则返回该位置的指针,如果是容器则返回该位置的迭代器

​ 如果数组或容器中没有需要寻找的元素,则lower_bound()和upper_bound()均返回可以插入该元素的位置的指针或迭代器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ algorithm 头文件下的常用函数详解 的相关文章

  • C# 打印问题(RichTextBox)

    我想打印我的 RichTextBox eintragRichTextBox 的内容 我现在有这个代码 private void druckenPictureBox Click object sender EventArgs e PrintD
  • 多个源的 makefile

    在学习 make 文件时 我试图为多个源目录编写一个 make 文件 似乎我在某个地方错了 这是我的代码结构 directory common fun2 c inc fun h src fun1 c main c 这是我的生成文件 CC c
  • 添加 Nullable int 时保持 null?

    我想添加可为空的int 并保留null当所有值都是null 我想要这个结果 1 2 3 1 null 1 null null null O null 0 问题是 如果我将一个值与 null 相加 结果为 null int i1 1 int
  • 将 new 与 decltype 一起使用

    T t T is an implementation detail t new T want to avoid naming T to allow for flexibility t new decltype t error cannot
  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • C++ 长 switch 语句还是用地图查找?

    在我的 C 应用程序中 我有一些值充当代表其他值的代码 为了翻译代码 我一直在争论使用 switch 语句还是 stl 映射 开关看起来像这样 int code int value switch code case 1 value 10 b
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • 如何制作可启动程序?

    所以 这个问题可能看起来很奇怪 但假设我编译了 int main void int x 3 int y 4 int z x y 是否可以让CPU这样运行 如何 例如 这允许我写入监视器吗 如果我没记错的话 内存中有些地方可以写入要显示的内容
  • 一元 +/- 运算符如何可能导致“-a”或“+a”中的整数提升,“a”是算术数据类型常量/变量?

    这句看似微不足道的台词摘自我的迈克 巴纳汉和布雷迪的 C 书 第 2 8 8 2 节 http publications gbdirect co uk c book chapter2 expressions and arithmetic h
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 使用 jQuery 从 ASP.Net JSON 服务获取数据

    我正在尝试调用 Google 地图地理编码 API 从纬度 经度对中获取格式化的地址 然后将其记录到控制台 我正在尝试获取为给定位置返回的第一个 formatted address 项目 我很简单无法从 JSON 中提取该项目 我不知道为什
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c
  • 使用 using 声明时,非限定名称查找如何工作?

    根据 C 标准 这是格式错误还是格式良好 namespace M struct i namespace N static int i 1 using M i using N i int main sizeof i Clang 拒绝它 GCC
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl

随机推荐

  • Cadence Allegro PCB快捷键设置

    1 通过env文件设置快捷键 在安装路径下D Cadence SPB 16 6 share pcb text中找到env文件 利用记事本打开 就可以加入自己的快捷键方式了 二 env文件在哪里 以我的电脑为例 在安装路径下D cadence
  • 实现点击图片放大查看功能

    1 html 代码 div style display none text align center width 100 height 100 background color none img style height 1 width 4
  • unity物体自身轴旋转_unity3d如何实现物体自动旋转-unity3d物体自动旋转的设置教程 - 河东软件园...

    unity3d是我们设计师用来制作游戏画面的软件 很多的手机App也可以使用它来制作 有的时候我们在游戏中能够看见一些人物或是物体的移动效果 例如平移 旋转等等都可以轻松的利用这款软件来实现 今天小编想和大家分享一下如何在unity3d中使
  • 2020-08-13

    https www cnblogs com daizhengyang p 13384169 html https blog csdn net qq 27289001 article details 77150598 https www cn
  • oracle学习之rownum和rowid

    rownum先百度一波https www cnblogs com xfeiyun p 16355165 html rownum是oracle特有的一个关键字 对于基表 在insert记录时 oracle就按照insert的顺序 将rownu
  • 编程的未来

    从 ChatGPT 诞生至今 在程序员的圈子里 我们一直有两种讨论 最开始所恐慌的 编程没有未来 ChatGPT 是不是要取代程序员 编程的方式前所未有地发生了变化 现如今 GitHub Copilot Chat 可以让开发者们直接在编辑器
  • 使用python分析数据分布

    要使用 Python 分析数据分布 你可以使用 Python 中的数据可视化库 如 matplotlib 或 seaborn 例如 你可以使用 matplotlib 的 hist 函数绘制数据的直方图 以查看数据的分布情况 你也可以使用 s
  • redis-cli报错Could not connect to Redis at 127.0.0.1:6379: Connection refused

    新手安装完redis后想要使用redis cli连接但是报错 为什么会报这个错呢 首先启动redis server 看能否启动 启动命令式 redis server 然后 1如果修改了IP地址 比如说改成了192 168 66 66 那么执
  • 中移物联ML302 4G Cat1 模组TCP/UDP 实现流程

    中移物联ML302 4G Cat1 模组TCP UDP 实现流程 注意 下文种的 表示 r n 一 首先AT 00 57 34 794 发 AT 00 57 35 756 发 AT 00 57 35 760 收 AT OK 二 查询卡CIM
  • 并发策略之分工原则

    本文主要思想来自 Java虚拟机并发编程 薛笛 译 为什么要用并发 并发是再在有限的资源下提高性能的有效手段 当然现在互联网环境下并发访问的现象也比比皆是 但是本文并不涉及处理并发访问 而是使用并发手段解决复杂任务的策略 另外关于并发和并行
  • 算法——排序——归并排序图解动画

    归并排序 简介 代码示例 排序过程 分解 合并 时间复杂度 空间复杂度 稳定性 简介 归并排序分为两部分 分解 合并 分解 归并算法会把数组分成两个长度相同的子数组 直到无法再分割 每个数组只有一个元素 此过程不消耗时间资源 对应的时间复杂
  • 03 Java_数据类型&变量&运算符

    第二章 数据类型 变量和运算符 double string character integer scanner score name boolean true false Java常用的数据类型 Java语言提供了八种基本类型 六种数字类型
  • activemq的clientId

    这个id如果不设置的话 那么会以电脑主机以及毫秒值加上随机数值来确认 比如 DESKTOP ST4H4BI 61938 1593840777757 0 1 但是也可以设置 但是要注意 activemq不允许多个客户的地址相同且clientI
  • python与数据挖掘 上机实验_python数据挖掘实验报告1

    python数据挖掘实验报告1 python数据挖掘实验报告1 实验内容及步骤 包含简要的实验步骤流程 1 使用Pandas datareader获取任意两支股票近三个月的交易数据 做出收盘价的变动图像 2 使用Pandas datarea
  • 【Paddle NLP入门打卡】实践课1:词向量应用演示 学习笔记

    文章目录 1 下载配置Embedding 2 认识Embedding 3 将词向量映射到低维空间 4 基于TokenEmbedding的词袋模型 5 构造Tokenizer 5 2 查看相似语句相关度 6 使用可视化VisualDL查看句子
  • Java垃圾回收机制、性能优化

    前言 Android开发中经常会遇见应用内存不断增加 或者在处理不当的情况下 造成内存泄漏 严重会导致OOM 但是Java有自动垃圾回收机制 为什么还会造成这种情况呢 那我们通过new关键字创建出来的对象 开启的Activity在什么情况下
  • C++解析字符串获取参数

    文章目录 1 功能说明 2 代码 1 功能说明 一些软件在运行时 需要一些命令 这里使用通过字符串的方式 来获取软件启动需要的一些参数 比如 name1 aaa name2 bbb 有这样一个字符串 通过解析 name1对应的aaa nam
  • 【高危】Google Chrome V8 类型混淆漏洞(CVE-2023-2033)

    漏洞描述 Google Chrome V8是Google开源的JavaScript和WebAssembly引擎 被用在Chrome和Node js等浏览器和平台中 该项目受影响版本存在类型混淆漏洞 攻击者可通过诱导用户打开恶意链接来触发此漏
  • 结构化分析

    1 什么是结构化分析 结构化分析 Structured Analysis 简称SA 简单来说就是是软件工程中的一种面向数据流的需求分析的方法 它的本质是一种创建模型的活动 2 结构化分析的具体步骤有哪些 1 建立当前系统的 具体模型 系统的
  • C++ algorithm 头文件下的常用函数详解

    6 9 algorithm 头文件下的常用函数 使用algorithm头文件 6 9 1 max min 和abs max x y 和min x y 分别返回x和y中的最大值和最小值 abs x 返回x的绝对值 注意浮点型的绝对值请用mat