C++ 算法 元素最大值和最小值
一 写在前面
- 本文介绍 C++ 标准库中的三个 用于获取元素最大值和最小值 的非更易型算法(nonmodifying algorithm): min_element、 max_element 和 min_max_element。同样均定义于头文件< algorithm >。
二 Demo
- 代码:
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <string>template <typename C>
void fill(C& container, int begin, int end) {for (auto i = begin; i <= end; i++) {container.emplace_back(i);}
}template <typename C>
void print(const std::string& pre, C container) {std::cout << pre;std::copy(container.begin(), container.end(),std::ostream_iterator<int>(std::cout, " "));std::cout << std::endl;
}int main() {{// min_element max_element min_max_elementstd::vector<int> vc;vc.emplace_back(1);fill(vc, 1, 9);vc.emplace_back(9);vc.emplace_back(9);print1("vc: ", vc);auto min = std::min_element(vc.begin(), vc.end());std::cout << "No." << std::distance(vc.begin(), min) << " is the min element." << std::endl;auto max = std::max_element(vc.begin(), vc.end());std::cout << "No." << std::distance(vc.begin(), max)<< " is the max element." << std::endl;auto min_max = std::minmax_element(vc.begin(), vc.end());std::cout << "min_max is No." << std::distance(vc.begin(), min_max.first) << " and No." << std::distance(vc.begin(), min_max.second) << std::endl;}std::cin.get();return 0;
}
- std::distance 请参考 C++ iterator(1) 几个辅助函数
- 结果:
vc: 1 1 2 3 4 5 6 7 8 9 9 9
No.0 is the min element.
No.9 is the max element.
min_max is No.0 and No.11
- 注意:
- min_element 返回[first, last) 中指向第一个最小值的迭代器
- max_element 返回[first, last) 中指向第一个最大值的迭代器
- minmax_element 返回 std::pair<第一个最小值的迭代器, 最后一个最大值的迭代器>
三 min_element
template< class ForwardIt >
ForwardIt min_element( ForwardIt first, ForwardIt last );(1)(until C++17)
template< class ForwardIt >
constexpr ForwardIt min_element( ForwardIt first, ForwardIt last );(1)(since C++17)
template< class ExecutionPolicy, class ForwardIt >
ForwardIt min_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last );(2)(since C++17)
template< class ForwardIt, class Compare >
ForwardIt min_element( ForwardIt first, ForwardIt last, Compare comp );(3)(until C++17)
template< class ForwardIt, class Compare >
constexpr ForwardIt min_element( ForwardIt first, ForwardIt last, Compare comp );(3)(since C++17)
template< class ExecutionPolicy, class ForwardIt, class Compare >
ForwardIt min_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last,Compare comp );(4)(since C++17)
四 max_element
template< class ForwardIt >
ForwardIt max_element( ForwardIt first, ForwardIt last );(1)(until C++17)
template< class ForwardIt >
constexpr ForwardIt max_element( ForwardIt first, ForwardIt last );(1)(since C++17)
template< class ExecutionPolicy, class ForwardIt >
ForwardIt max_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last );(2)(since C++17)
template< class ForwardIt, class Compare >
ForwardIt max_element( ForwardIt first, ForwardIt last, Compare comp );(3)(until C++17)
template< class ForwardIt, class Compare >
constexpr ForwardIt max_element( ForwardIt first, ForwardIt last, Compare comp );(3)(since C++17)
template< class ExecutionPolicy, class ForwardIt, class Compare >
ForwardIt max_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, Compare comp );(4)(since C++17)
五 minmax_element (C++11)
template< class ForwardIt >
std::pair<ForwardIt,ForwardIt>
minmax_element( ForwardIt first, ForwardIt last );(1)(since C++11)(until C++17)
template< class ForwardIt >
constexpr std::pair<ForwardIt,ForwardIt>
minmax_element( ForwardIt first, ForwardIt last );(1)(since C++17)
template< class ExecutionPolicy, class ForwardIt >
std::pair<ForwardIt,ForwardIt>
minmax_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last );(2)(since C++17)
template< class ForwardIt, class Compare >
std::pair<ForwardIt,ForwardIt>
minmax_element( ForwardIt first, ForwardIt last, Compare comp );(3)(since C++11)(until C++17)
template< class ForwardIt, class Compare >
constexpr std::pair<ForwardIt,ForwardIt>
minmax_element( ForwardIt first, ForwardIt last, Compare comp );(3)(since C++17)
template< class ExecutionPolicy, class ForwardIt, class Compare >
std::pair<ForwardIt,ForwardIt>
minmax_element( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, Compare comp );(4)(since C++17)
六 参考
- 《C++ 标准库 第二版》
- cppreference min_element
- cppreference max_element
- cppreference minmax_element
C++ 算法 元素最大值和最小值相关推荐
- java 蓝桥杯算法训练 最大值与最小值的计算(题解)
试题 算法训练 最大值与最小值的计算 资源限制 时间限制:1.0s 内存限制:512.0MB 输入11个整数,计算它们的最大值和最小值. 样例输入 0 1 2 3 4 5 6 7 8 9 10 样例输 ...
- 左神算法:最大值减去最小值小于或等于num的子数组的数量(Java版)
本题来自左神<程序员面试代码指南>"最大值减去最小值小于或等于num的子数组的数量"题目. 题目 给定数组 arr 和整数 num,共返回有多少个子数组满足如下情况: ...
- 查找数组元素最大值和最小值(分治法)
1. 问题 给定一个数组,要求找出数组中的最大值和最小值,假设数组中的值两两各不相同 2. 思路 2.1 首元素比较法 定义变量 max.min , 分别将第一个元素分别赋值给这两个变量,然后依次遍历 ...
- 【c语言】蓝桥杯算法训练 最大值与最小值的计算
[问题描述] 输入11个整数,计算它们的最大值和最小值. [样例输入] 0 1 2 3 4 5 6 7 8 9 10 [样例输出] 10 0 #include<stdio.h> int m ...
- 蓝桥杯 ALGO-67 算法训练 最大值与最小值的计算
输入11个整数,计算它们的最大值和最小值. 样例输入 0 1 2 3 4 5 6 7 8 9 10 样例输出 10 0 #include <iostream> using namespac ...
- java通过键盘输入数组赋值并交换数组元素最大值和最小值
步骤: 定义数组,声明最大最小值.数组交换中间值.最大最小索引值.扫描器类Scanner 循环输入元素值,遍历数组检查元素的值是否正确,找出最大最小值以及对应的索引值 交换最大最小值,遍历数组检查元素 ...
- 算法设计——用分治法查找数组元素的最大值和最小值、用分治法实现合并排序、最小费用问题、树的最大连通分支问题(代码实现)
代码链接:pan.baidu.com/s/15inIth8Vl89R1CgQ_wYc2g 提取码:gf13 算法分析与设计第 1 次实验 时间 2020.3.31 地点 软件大楼 127 实验名称 ...
- 分治算法求n个元素的最大值和最小值
分治算法求n个元素的最大值和最小值 算法思想: 1.将n个数均分为s1和s2 2.分别求解s1和s2的最大值和最小值 s1最大值为max1,s1最 ...
- 找出最大值和最小值(算法导论第三版9.1-2)
找出最大值和最小值 (算法导论第三版9.1-2) 在最坏的情况下,比较次数下界是⌈3n/2⌉−2 void find_maximum_and_minimum_element(int *array,in ...
最新文章
- scala akka_如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法
- Jenkins中运行脚本提示“Permission denied”,没有权限解决方法(MacOS)
- 在桌面应用程序与Web应用程序之间该如何选择
- 成功解决linear_model\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been ad
- golang常用手册:数组、变量作用域、函数
- 曼彻斯特编码_两种编码方式以及两种帧结构
- [HTTP] Nginx代理以及面向未来的HTTP
- 当代职场成功学:越懒惰,越躺赢
- python安装方法_Python如何批量更新已安装的库,为你介绍六种方法!
- 代理模式 委派模式 策略模式_委派模式和策略模式
- Windroy Lets Android run on Windows systems-- 国外androids 虚拟系统分享
- 【机器人】基于指数积的机械臂运动学标定
- Linux设备驱动--块设备(一)之概念和框架(转)
- antd tree节点添加删除按钮_MySQL索引原理及BTree(B/+Tree)结构详解
- python发送soap报文_python处理SOAP API
- 电阻(1)电阻种类篇
- 一起Talk Android吧(第三百一十七回:Android中的虚拟按键)
- 大数据与云计算技术周报(第150期)
- 关于comparator升序、降序
- 可以听歌玩游戏看股票背单词的ROS开发工具?小鱼:就差能点外卖了~
热门文章
- netty pipeline 执行顺序解读
- android 滑动取值_Android View篇之调整字体大小滑杆的实现
- Win10截屏的几种方法介绍
- 京东云 linux无法远程,怎样远程登录京东云云主机.pdf
- 手机微信登录的服务器繁忙请稍后再试,微信操作太频繁请稍后再试怎么办(登不上去要等多久)...
- python+pyautogui+pyperclip实现QQ自动加好友功能
- android程序毕业答辩ppt,软件毕业答辩PPT范例
- BaseFX 实习小记(终)
- PHP实现手机号或身份证号中间几位变*
- linux无法解析域名