📌  相关文章
📜  如何在C++中使用STL查找数组的最大元素?(1)

📅  最后修改于: 2023-12-03 14:52:40.765000             🧑  作者: Mango

如何在C++中使用STL查找数组的最大元素?

在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中,将比较操作反转了,所以实际上我们找到的是最小元素。如果需要找到最大元素,则需要将比较操作进行调整。