当我们需要在一组数据中找到最大值、最小值的时候,我们可以使用C++标准库中的接口:min()、max()、minmax(),它们的作用如下:

min() : 返回队列中的最小值

max() : 返回队列中的最大值

minmax():以数据对的形式(pair)返回队列中的最大值和最小值

其中miinmax()接口是始于C++11

使用这个三个函数接口时,需要包含头文件 algorithm

关于这三个接口的使用,代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct st
{
	int value;
	st(int v):value(v){}
};

bool mincmp(st a, st b)
{
	return a.value < b.value;
}

bool maxcmp(st a, st b)
{
	return a.value < b.value;
}


int main()
{
	st s1(1);
	st s2(2);
	st s3(3);

	// min()
	min(1, 2);					
	min(s1, s2, mincmp);		
	min({ s1,s2,s3 }, mincmp);

	// max()
	max(1, 2);					
	max(s1, s2, maxcmp);
	max({ s1,s2,s3 }, maxcmp);

	// minmax()
	minmax(1, 2);
	minmax(s1, s2, mincmp);
	minmax({ s1, s2,s3 }, mincmp);

	// 关于 minmax() 的返回值: pair<>数据对
	pair<int, int> m1 = minmax(1, 2);
	pair<st, st> m2 = minmax(s1, s2, mincmp);
	pair<st, st> m3 = minmax({ s1,s2,s3 }, mincmp);
	
    // 也可以使用自定义类型推导
	auto m4 = minmax({ 1,2,3 });
	cout << "first = " << m4.first << endl;		// 1, first  - 最小值
	cout << "second= " << m4.second << endl;    // 3,second - 最大值

	return 0;
}

其中minmax()函数的返回值,类型为pair,即数据对类型,其中first,代表数据中的最小值,second代表数据中的最大值。

当返回值声明不便于书写的时候,我们可以使用自动类型推导auto关键词来进行声明。例如:

auto res = minmax({1,2,3});

输入结果,可以直接输出数据对中的first和second变量:

auto res = minmax({ 1,2,3 });
cout << "min = " << res.first << endl;
cout << "max = " << res.second << endl;

谢谢阅读

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐