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 minmax()用法及代碼示例
- C++ Algorithm minmax_element()用法及代碼示例
- C++ Algorithm min()用法及代碼示例
- C++ Algorithm max_element()用法及代碼示例
- C++ Algorithm max()用法及代碼示例
- C++ Algorithm merge()用法及代碼示例
- C++ Algorithm make_heap()用法及代碼示例
- C++ Algorithm remove_if()用法及代碼示例
- C++ Algorithm remove()用法及代碼示例
- C++ Algorithm set_union()用法及代碼示例
- C++ Algorithm next_permutation()用法及代碼示例
- C++ Algorithm upper_bound()用法及代碼示例
- C++ Algorithm remove_copy_if()用法及代碼示例
- C++ Algorithm random_shuffle()用法及代碼示例
- C++ Algorithm pop_heap()用法及代碼示例
- C++ Algorithm replace()用法及代碼示例
- C++ Algorithm set_intersection()用法及代碼示例
- C++ Algorithm lower_bound()用法及代碼示例
- C++ Algorithm transform()用法及代碼示例
- C++ Algorithm set_difference()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ Algorithm min_element()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。