C++定义的函数使用不同的函数在2个容器中或容器中获取最小和最大元素。但是也有一些函数可以使用单个函数获取最小和最大元素,“minmax()”函数可以为我们完成此任务。此函数在“algorithm”头文件中定义。本文将讨论其实现和其他相关函数。
- minmax(a,b):此函数返回一对,其中第一个元素是两个元素中的最小值,第二个元素是两个元素中的最大值。
- minmax(元素数组):该函数的返回结果与第一个版本相似。唯一的区别是,在此版本中,可接受的参数是整数/字符串列表,其中可获取最大值和最小值。当我们需要在列表中查找最大和最小元素而不进行排序时很有用。
// C++ code to demonstrate the working of minmax() #include<iostream> #include<algorithm> using namespace std; int main() { // declaring pair to catch the return value pair<int, int> mnmx; // Using minmax(a, b) mnmx = minmax(53, 23); // printing minimum and maximum values cout << "The minimum value obtained is:"; cout << mnmx.first; cout << "\nThe maximum value obtained is:"; cout << mnmx.second ; // Using minmax((array of elements) mnmx = minmax({2, 5, 1, 6, 3}); // printing minimum and maximum values. cout << "\n\nThe minimum value obtained is:"; cout << mnmx.first; cout << "\nThe maximum value obtained is:"; cout << mnmx.second; }
输出:
The minimum value obtained is:23 The maximum value obtained is:53 The minimum value obtained is:1 The maximum value obtained is:6
- minmax_element():此函数的目的与上述函数相同,即查找最小和最大元素。但这在返回类型和接受的参数上有所不同。此函数接受开始和结束指针作为其参数,并用于查找范围内的最大和最小元素。此函数返回对指针,其第一个元素指向范围中最小元素的位置,第二个元素指向范围中最大元素的位置。如果最小值大于1,则第一个元素指向第一个出现的元素。如果最大数目超过1,则第二个元素指向最后出现的元素。
// C++ code to demonstrate the working of minmax_element() #include<iostream> #include<algorithm> #include<vector> using namespace std; int main() { // initializing vector of integers vector<int> vi = { 5, 3, 4, 4, 3, 5, 3 }; // declaring pair pointer to catch the return value pair<vector<int>::iterator, vector<int>::iterator> mnmx; // using minmax_element() to find // minimum and maximum element // between 0th and 3rd number mnmx = minmax_element(vi.begin(), vi.begin() + 4); // printing position of minimum and maximum values. cout << "The minimum value position obtained is:"; cout << mnmx.first - vi.begin() << endl; cout << "The maximum value position obtained is:"; cout << mnmx.second - vi.begin() << endl; cout << endl; // using duplicated // prints 1 and 5 respectively mnmx = minmax_element(vi.begin(), vi.end()); // printing position of minimum and maximum values. cout << "The minimum value position obtained is:"; cout << mnmx.first - vi.begin() << endl; cout << "The maximum value position obtained is:"; cout << mnmx.second - vi.begin()<< endl; }
输出:
The minimum value position obtained is:1 The maximum value position obtained is:0 The minimum value position obtained is:1 The maximum value position obtained is:5
相关用法
注:本文由纯净天空筛选整理自 std::minmax() and std::minmax_element() in C++ STL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。