📅  最后修改于: 2023-12-03 14:52:40.765000             🧑  作者: Mango
在C++中,使用STL可以非常方便地查找数组的最大元素。标准库中提供了一个名为std::max_element
的函数,可以用于查找数组的最大元素。
std::max_element
函数的原型定义如下:
template<class ForwardIt>
ForwardIt max_element(ForwardIt first, ForwardIt last);
template<class ForwardIt, class Compare>
ForwardIt max_element(ForwardIt first, ForwardIt last, Compare comp);
其中,ForwardIt
是指向前向迭代器的类型参数,Compare
是可调用对象类型参数,用于定义元素比较方式。第一个函数使用默认的比较方式进行查找,第二个函数可传入自定义的比较方式。
使用std::max_element
函数查找数组的最大元素,只需要传入数组的起始和终止迭代器即可:
#include <algorithm>
#include <iostream>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int* max_element = std::max_element(std::begin(arr), std::end(arr));
std::cout << "The maximum element in the array is: " << *max_element << '\n';
return 0;
}
输出结果为:
The maximum element in the array is: 5
如果需要使用自定义的比较方式进行查找,则可以在调用函数时传入一个可调用对象(如函数指针、函数对象、Lambda表达式等):
#include <algorithm>
#include <iostream>
bool greater_than(int a, int b) {
return a > b;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int* max_element = std::max_element(std::begin(arr), std::end(arr), greater_than);
std::cout << "The maximum element in the array is: " << *max_element << '\n';
return 0;
}
输出结果为:
The maximum element in the array is: 1
这是因为我们在自定义的比较函数greater_than
中,将比较操作反转了,所以实际上我们找到的是最小元素。如果需要找到最大元素,则需要将比较操作进行调整。