当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ Algorithm min_element()用法及代码示例


C++ 算法 min_element() 返回一个迭代器,该迭代器指向范围 [first, last) 中具有最小值的元素。

第一个版本使用 operator< 比较元素,第二个版本使用给定的二进制比较函数 comp 比较元素。

用法

default (1)     template <class ForwardIterator>
                       ForwardIterator min_element (ForwardIterator first, ForwardIterator last);

custom (2)      template <class ForwardIterator, class Compare>
                         ForwardIterator min_element (ForwardIterator first, ForwardIterator last,
                                                                       Compare comp);

参数

first:一个输入迭代器,将位置指向要搜索的最小元素的范围中的第一个元素。

last:一个输入迭代器,将位置指向要搜索的最小元素的范围中的最后一个元素。

comp: 一个用户定义的二元谓词函数,它接受两个参数,如果两个参数按顺序返回真,否则返回假。它遵循严格的弱排序来对元素进行排序。

返回值

如果范围为空,则返回范围 [first, last) 或 last 中的较小值。

复杂度

复杂性是线性的,比所比较的元素数量少一个。

异常

如果任何比较引发异常,则此函数将引发异常。

请注意,无效参数会导致未定义的行为。

例子1

让我们看一个简单的例子来找到范围内最小元素的位置:

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v{3, 2, 4, 1, 5, 9};
 
    vector<int>::iterator result = min_element(begin(v), end(v));
    cout << "min element at:" << distance(begin(v), result);
    
    return 0;
}

输出:

min element at:3

例子2

让我们看另一个使用默认版本查找范围内最小元素的简单示例:

#include <iostream> 
#include <algorithm> 
using namespace std; 
int main() 
{ 
    int v[] = { 9, 4, 7, 2, 5, 10, 11, 12, 1, 3, 6 }; 
  
    // Finding the minimum value between the third and the 
    // fifth element 
  
    int* i1; 
    i1 = min_element(v + 2, v + 5); 
  
    cout <<"Minimum element is:" <<*i1 << "\n"; 
    return 0; 
}

输出:

Minimum element is:2

例子3

让我们看另一个使用比较函数查找范围内最小元素的简单示例:

#include <iostream> 
#include <algorithm> 
using namespace std; 
  
// Defining the BinaryFunction 
bool comp(int a, int b) 
{ 
    return (a < b); 
} 
  
int main() 
{ 
    int v[] = { 9, 4, 7, 2, 5, 10, 11, 12, 1, 3, 6 }; 
  
    // Finding the minimum value between the third and the 
    // ninth element 
  
    int* i1; 
    i1 = min_element(v + 2, v + 9, comp); 
  
    cout << "Smallest element is:"<<*i1 << "\n"; 
    return 0; 
}

输出:

Smallest element is:1

示例 4

让我们看另一个简单的例子:

#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <string>

using namespace std;
 
bool compare(pair<string, int> p, pair<string, int> q )
{
    return p.second < q.second;
}
 
void print(const vector <int>& v)
{
    vector <int>::const_iterator i;
    for(i = v.begin(); i != v.end(); i++)
    {
        cout << *i << " ";
    }
     cout << endl;
}
 
void fun(pair<string, int> p)
{
    cout << p.first << "\t" << p.second << endl;
}
 
int main()
{
    int arr[] = {40, 80, 50, 30, 10, 70, 60, 100, 20, 90};
    vector <int> v(arr, arr + sizeof(arr)/sizeof(int));
    map <string, int> rank;
    pair <string, int> min;
    rank["Nikita"] = 10;
    rank["Deep"] = 5;
    rank["Soonu"] = 2;
    rank["Ajeet"] = 7;
 
    cout << "min_element() without predicate " << endl;
    cout << "Vector:";
    print(v);
    cout << "Minimum element = "
              << *min_element(v.begin(), v.end())
              << endl;
    cout << "\nmin_element() with predicate" << endl;
    cout << "Name\tMarks" << endl; 
    for_each(rank.begin(), rank.end(), fun);
    min = (*min_element(rank.begin(), rank.end(), compare));
    cout << "Person with best rank = " << min.first
              << ", Rank = " << min.second << endl;
}

输出:

min_element() without predicate 
Vector:40 80 50 30 10 70 60 100 20 90 
Minimum element = 10

min_element() with predicate
Name	Marks
Ajeet	7
Deep	5
Nikita	10
Soonu	2
Person with best rank = Soonu, Rank = 2





相关用法


注:本文由纯净天空筛选整理自 C++ Algorithm min_element()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。