std::max_element
时间: 2023-08-01 21:08:07 浏览: 170
`std::max_element()` 是 C++ 标准库 `<algorithm>` 头文件中的函数模板,用于查找一个序列中的最大元素。它的函数签名如下所示:
```c++
template< class ForwardIt >
ForwardIt max_element( ForwardIt first, ForwardIt last );
template< class ForwardIt, class Compare >
ForwardIt max_element( ForwardIt first, ForwardIt last, Compare comp );
```
其中,`first` 和 `last` 是表示序列的迭代器,`max_element()` 函数会在 `[first, last)` 区间内查找最大值,并返回一个指向最大值的迭代器。如果序列为空,则返回 `last` 迭代器。
第二个函数模板中的 `comp` 参数是一个可调用对象,用于指定比较方式。默认情况下,`max_element()` 会使用 `<` 运算符来比较元素大小。如果我们需要使用其他比较方式,可以通过传递一个自定义的比较函数对象或者函数指针来实现。
下面是一个使用默认比较方式的例子:
```c++
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> v = {1, 3, 2, 5, 4};
auto it = std::max_element(v.begin(), v.end());
std::cout << "The maximum element is " << *it << std::endl; // 输出 5
return 0;
}
```
下面是一个使用自定义比较函数的例子:
```c++
#include <algorithm>
#include <iostream>
#include <vector>
bool cmp(int a, int b) {
return a % 10 < b % 10; // 按照个位数比较大小
}
int main() {
std::vector<int> v = {12, 35, 28, 47, 59};
auto it = std::max_element(v.begin(), v.end(), cmp);
std::cout << "The maximum element is " << *it << std::endl; // 输出 47
return 0;
}
```
在上面的例子中,我们定义了一个自定义比较函数 `cmp`,按照数字的个位数来比较大小。然后我们使用 `std::max_element()` 函数来查找最大元素,并将 `cmp` 作为第三个参数传递进去,这样 `max_element()` 就会使用我们自定义的比较方式来查找最大元素。
阅读全文