最小值和最大值
min_element(b, e)
:返回一个迭代器min_element(b, e, op)
:max_element(b, e)
:max_element(b, e, op)
:第三个参数op
可写可不写,max_element()
和min_element()
默认是从小到大排列,然后max_element()
输出最后一个值,min_element()
输出第一个值,但是如果自定义的op
函数写的是从大到小排列,那么会导致max_element()
和min_element()
的两个结果是对调的.
代码示例
#include <iostream>
#include <algorithm>
#include <deque>
using namespace std;
bool absLess ( int elem1, int elem2)
{
return abs ( elem1) < abs ( elem2) ;
}
int main ( )
{
deque< int > ideq;
ideq. insert ( ideq. end ( ) , - 12 ) ;
for ( int i = 2 ; i <= 8 ; ++ i)
ideq. insert ( ideq. end ( ) , i) ;
for ( int i = - 3 ; i <= 5 ; ++ i)
ideq. insert ( ideq. end ( ) , i) ;
for ( deque< int > :: iterator iter = ideq. begin ( ) ;
iter != ideq. end ( ) ; ++ iter)
cout << * iter << ' ' ;
cout << endl;
deque< int > :: iterator min_result = min_element ( ideq. begin ( ) , ideq. end ( ) ) ;
cout << "最小值:" << * min_result << endl;
cout << "最大值:" << * max_element ( ideq. begin ( ) , ideq. end ( ) ) << endl;
cout << "绝对最小值:" << * min_element ( ideq. begin ( ) , ideq. end ( ) , absLess) << endl;
cout << "绝对最大值:" << * max_element ( ideq. begin ( ) , ideq. end ( ) , absLess) << endl;
return 0 ;
}