std::
minmax
函数模板 <algorithm>
C++11 |
default (1) |
template <class T>
pair <const T&,const T&> minmax (const T& a, const T& b); |
|
custom (2) |
template <class T, class Compare>
pair <const T&,const T&> minmax (const T& a, const T& b, Compare comp); |
|
initializer list (3) |
template <class T>
pair<T,T> minmax (initializer_list<T> il);
template <class T, class Compare>
pair<T,T> minmax (initializer_list<T> il, Compare comp); |
C++14 |
default (1) |
template <class T>
constexpr pair <const T&,const T&> minmax (const T& a, const T& b); |
|
custom (2) |
template <class T, class Compare>
constexpr pair <const T&,const T&> minmax (const T& a, const T& b, Compare comp); |
|
initializer list (3) |
template <class T>
constexpr pair<T,T> minmax (initializer_list<T> il);
template <class T, class Compare>
constexpr pair<T,T> minmax (initializer_list<T> il, Compare comp); |
返回最小和最大的元素
返回一个 pair,把a和b中最小的作为第一个元素,最大的作为第二个元素。
如果两者相等,则函数返回make_pair(a,b)。
初始化器列表(3)的版本返回一个pair,将列表中所有元素中最小的作为第一个元素(如果有多个元素,
则是第一个),最大的作为第二个元素(如果有多个元素,则是最后一个)。
该函数使用operator<(或compp,如果提供的话)来比较值。
这个函数模板(版本(1))的行为相当于:
template <class T> pair <const T&,const T&> minmax (const T& a, const T& b) {
return (b<a) ? std::make_pair(b,a) : std::make_pair(a,b);
} |
☲ 参数
-
a, b
-
比较的值.
-
comp
-
接受两个T类型的值作为参数,并返回可转换为bool类型的值的二元函数。
返回的值表明作为第一个参数传递的元素是否被认为小于第二个参数。
函数不能修改它的任何参数。
它可以是一个函数指针,也可以是一个函数对象。
-
il
-
一个初始化器列表对象。
这些对象是由初始化器列表声明器自动构造的。
-
T
-
应支持与operator<进行比较。
对于(3),T应是可复制构造的。
☉ 返回值
一个pair.
☣ 示例
// minmax example
#include <iostream> // std::cout
#include <algorithm> // std::minmax
int main () {
auto result = std::minmax({1,2,3,4,5});
std::cout << "minmax({1,2,3,4,5}): ";
std::cout << result.first << ' ' << result.second << '\n';
return 0;
} |
输出:
minmax({1,2,3,4,5}): 1 5
✥ 复杂度
最多可在1.5倍的线性元素数量比较((1)和(2)为常量)。
☂ 异常安全性
如果任何比较抛出,则抛出。
注意,无效的参数会导致未定义的行为。
🍄 另请参阅
min |
返回最小的(函数模板) |
max |
返回最大的元素(函数模板) |
minmax_element |
返回范围内最小和最大的元素(函数模板) |