min与max

scorlw 发布于

min与max

c++

包含在c++标准库中头文件中,在头文件<windows.h>中定义了min,max的宏,若在包含的同时包含<windows.h>会导致函数无法使用。

<windows.h>提供了_cpp_min等函数来代替min函数的功能。

C++11标准:中min函数的原型

default (1)

1
template <class T> const T& min (const T& a, const T& b);

custom (2)

1
2
template <class T, class Compare>
const T& min (const T& a, const T& b, Compare comp);

initializer list (3)

1
2
3
template <class T> T min (initializer_list<T> il);
template <class T, class Compare>
T min (initializer_list<T> il, Compare comp);

例程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include<algorithm>
using namespace std;
struct var {
char *name;
int key;
var(char *a,int k):name(a),key(k){}
};
bool comp(const var& l, const var& r) {
return l.key < r.key;
}
int main() {
var v1("var1", 2);
var v2("var2", 3);
cout << std::min(v1, v2,comp).name << endl;
return 0;
}

输出:

1
var1