Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

max_element

函数模板  <algorithm>
default (1)
template <class ForwardIterator>
  ForwardIterator max_element (ForwardIterator first, ForwardIterator last);
custom (2)
template <class ForwardIterator, class Compare>
  ForwardIterator max_element (ForwardIterator first, ForwardIterator last,
                               Compare comp);

返回范围内最大的元素

返回一个迭代器,指向范围[first,last)中最大的元素。

第一个版本使用 operator< 进行比较,第二个版本使用comp操作符进行比较; 如果没有其他元素比一个元素大,那么这个元素就是最大的。 如果有多个元素满足此条件,则迭代器返回指向第一个元素的指针。

这个函数模板的行为相当于:
template <class ForwardIterator>
  ForwardIterator max_element ( ForwardIterator first, ForwardIterator last )
{
  if (first==last) return last;
  ForwardIterator largest = first;

  while (++first!=last)
    if (*largest<*first)    // or: if (comp(*largest,*first)) for version (2)
      largest=first;
  return largest;
}

☲  参数


first, last
指向比较序列的初始和最终位置的输入迭代器。使用的范围是[first,last], 它包含first和last之间的所有元素,包括first所指的元素, 但不包括last所指的元素。

comp
接受范围内的两个元素作为参数,并返回可转换为bool类型的值的二元函数。 返回的值表明作为第一个参数传递的元素是否被认为小于第二个参数。
函数不能修改它的任何参数。
它可以是一个函数指针,也可以是一个函数对象。

☉  返回值



指向范围内最大值的迭代器,如果范围为空,则指向last的迭代器。

☣  示例



// min_element/max_element example
#include <iostream>     // std::cout
#include <algorithm>    // std::min_element, std::max_element

bool myfn(int i, int j) { return i<j; }

struct myclass {
  bool operator() (int i,int j) { return i<j; }
} myobj;

int main () {
  int myints[] = {3,7,2,5,6,4,9};

  // using default comparison:
  std::cout << "The smallest element is " << *std::min_element(myints,myints+7) << '\n';
  std::cout << "The largest element is "  << *std::max_element(myints,myints+7) << '\n';

  // using function myfn as comp:
  std::cout << "The smallest element is " << *std::min_element(myints,myints+7,myfn) << '\n';
  std::cout << "The largest element is "  << *std::max_element(myints,myints+7,myfn) << '\n';

  // using object myobj as comp:
  std::cout << "The smallest element is " << *std::min_element(myints,myints+7,myobj) << '\n';
  std::cout << "The largest element is "  << *std::max_element(myints,myints+7,myobj) << '\n';

  return 0;
}

输出:
The smallest element is 2
The largest element is 9
The smallest element is 2
The largest element is 9
The smallest element is 2
The largest element is 9

✥ 复杂度



一个小于元素的数量比较,线性。

⇄ 数据竞争


[first,last)范围内的对象被访问。

☂ 异常安全性



如果任何比较抛出,则抛出。
注意,无效的参数会导致未定义的行为。

🍄  另请参阅



max 返回最大的(函数模板)
upper_bound 返回迭代器上界(函数模板)
min_element 返回范围内最小的元素(函数模板)

联系我们 免责声明 关于CandCplus 网站地图