0x00 前言

最后更新日期:2022-09-26

0x01 max_element()以及min_element()

max_element()用于从范围[first, last)中获取最大值的元素。

min_element()用于从范围[first, last)中获取最小值的元素。

1.max_element()

max_element()包含在 algorithm 库中,语法如下(C++17起):

#include<algorithm>
template< class ExecutionPolicy, class ForwardIt, class Compare >
template< class ForwardIt, class Compare >
constexpr ForwardIt max_element(ForwardIt first, ForwardIt last, Compare comp );

参数:
first, last:定义要检验范围的向前迭代器 .
comp:比较函数对象

返回值:
指向范围 [first, last) 中最大元素的迭代器。若范围中有多个元素等价于最大元素,则返回指向首个这种元素的迭代器。若范围为空则返回 last

例1:

#include <algorithm>
#include <iostream>
#include <vector>
#include <cmath>static bool abs_compare(int a, int b)
{return (std::abs(a) < std::abs(b)); //绝对值大小比较
}int main()
{std::vector<int> v{ 3, 1, -14, 1, 5, 9 }; std::vector<int>::iterator result;result = std::max_element(v.begin(), v.end());std::cout << "max element at: " << std::distance(v.begin(), result) << '\n';result = std::max_element(v.begin(), v.end(), abs_compare);std::cout << "max element (absolute) at: " << std::distance(v.begin(), result) << '\n';
}

输出:

max element at: 5
max element (absolute) at: 2

2. min_element()

min_element()包含在 algorithm 库中,语法如下(C++17起):

#include<algorithm>
template< class ForwardIt, class Compare >
constexpr ForwardIt min_element( ForwardIt first, ForwardIt last, Compare comp );

参数:
first, last:定义要检验范围的向前迭代器 .
comp:比较函数对象

返回值:
指向范围 [first, last) 中最小元素的迭代器。若范围中有多个元素等价于最小元素,则返回指向首个这种元素的迭代器。若范围为空则返回 last

例2:

#include <algorithm>
#include <iostream>
#include <vector>int main()
{std::vector<int> v{3, 1, 4, 1, 5, 9};std::vector<int>::iterator result = std::min_element(std::begin(v), std::end(v));std::cout << "min element at: " << std::distance(std::begin(v), result);
}

输出:

min element at: 1

3.其他示例:

例3:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;int main()
{int ans = 0;vector<int> res{ 1, 2, 3, 4, 2 };int arr[] = { 1, 2, 3, 4, 2 };ans= *max_element(res.begin(), res.end());cout << "max element of the vector:" << ans<< endl;ans= *max_element(arr + 0, arr + 5);cout << "max element of the array:" << ans<< endl;ans= *min_element(res.begin(), res.end());cout << "min element of the vector:" << ans<< endl;ans= *min_element(arr + 0, arr + 5);cout << "min element of the array:" << ans<< endl;return 0;
}

输出:

max element of the vector:4
max element of the array:4
min element of the vector:1
min element of the array:1

例4:
leetcode有一个可以利用到max_element()函数解题的题目:
https://leetcode.cn/problems/longest-subarray-with-maximum-bitwise-and/

题解:

class Solution {public:int longestSubarray(vector<int>& nums) {int mx = *max_element(nums.begin(), nums.end());int cur = 0, res = 0;for (auto &x : nums) {if (x == mx) cur++;else cur = 0;res = max(res, cur);}return res;}
};

以上。

参考文档:
1.https://www.apiref.com/cpp-zh/cpp/algorithm/max_element.html
2.https://www.apiref.com/cpp-zh/cpp/algorithm/min_element.html
3.https://vimsky.com/examples/usage/stl-std-max_element-function-with-example-02.html

【C++】max_element()以及min_element()相关推荐

  1. 【C++】max_element() 和 min_element()

    0. 在头文件 #include <algorithm> 中,返回的是迭代器,所以输出值的话要在前面加 * 1. 第三个参数cmp可写可不写, max_element() 和 min_el ...

  2. STL 之count,count_if,max,max_element,min,min_element和random_shuffle

    count:在指定区间上统计指定值出现的次数. count_if:条件统计 max:判断两个数值中的较大值 max_element:查找指定区间的最大元素 min:判断两个数值中的较小值 min_el ...

  3. STL(六)——max_element和min_element

    调用STL(标准模板库)中的函数能够比自己写循环来的更快. 用法 设int数组 a[5]={5, 4, 3, 2, 1}; 1.求数组最大值: *max_element(a,a+5)= 5 2.求二维 ...

  4. C++__min_element()和max_element()函数的使用

    C++__min_element()和max_element()函数的使用 今天在leetcode练习题目时遇到了min_element(),在此学习下min_element()与max_elemen ...

  5. 非变动性算法源代码分析与使用示例( for_each、min_element 、find_if、search 等)...

    非变动性算法代码分析与示例: 一.for_each C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14   // TEMPLATE FUNCTION for_each ...

  6. c++中求字符串数组的min/max

    1.函数:(作用:返回容器中最小值和最大值.) min_element() max_element max_element(first,end,cmp);其中cmp为可选择参数! 第三个参数cmp可写 ...

  7. [C++ STL] 常用算法总结

    1 概述 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<alg ...

  8. STL源码剖析 数值算法 heap算法

    算法 adjacent_find count count_if find find_if find_end for_each generate generate_n includes max_elem ...

  9. 初识贪心——调度问题

    一.区间调度问题 囊括"活动调度问题",以HDU2037为例. Problem Description 有很多电视节目,给出他们的起止时间,有的节目时间冲突,问能完整看完的电视节目 ...

最新文章

  1. 华人一作登ICCV 2021,实时超分新SOTA!AutoML显神威:1%参数量,超清视频70倍加速...
  2. [TEAP] HTML5简史
  3. 翻转字符串里面的单词(*****)
  4. leetcode442. 数组中重复的数据
  5. ubuntu 安装(install) pwntcha[一个做验证码识别的开源程序]
  6. [css] 说说你对css盒子模型的理解
  7. android设置多个按钮,android代码中设置两个按钮之间位置
  8. 那些年我们踩过的坑-NSTimer
  9. sprintf 函数
  10. c++ primer plus 对象和类
  11. ContextCapture(Smart3D)网盘教程 直接下载
  12. matlab中dfft,语音识别的matlab程序
  13. STM32F103_study64_The punctual atoms(Simulator and downloader)
  14. 苹果 iPad 上如何设置和使用蓝牙鼠标?
  15. 计算机基础知识精品课程,校级精品课程《大学计算机基础》简介
  16. Java经典面试:源码解读及如何保证线程安全
  17. LeetCode 开心字符串
  18. Win11系统组策略编辑器打不开解决方法
  19. Java多态和实现接口的类的对象赋值给接口引用的方法
  20. 树叶贴画机器人_树叶贴画怎么保存塑封

热门文章

  1. 成长日记——初识C语言
  2. 二十九:BIO,NIO,AIO的简单概括
  3. 朗强:如何选择和使用HDMI混合矩阵切换器?
  4. java随手笔记 接口的理解
  5. 2017.0612.《计算机组成原理》总线控制
  6. android 2.2 刷机,Android 2.2! 谷歌G1/Dream快速刷机教程
  7. 国内,美国数学专业排名
  8. 计算机英语双色,计算机英语教程(双色版)参考译文
  9. 各大银行借记卡取款手续费比较表
  10. 甘肃省普通高等学校高职(专科)升本科考试计算机科考试大纲(试行)