📜  max_element c++ (1)

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

C++ STL max_element

在C++中,max_element 是STL中的一个函数,用于获取指定范围内的最大值。

函数声明
template< class ForwardIt >
ForwardIt max_element( ForwardIt first, ForwardIt last );

template< class ForwardIt, class Compare >
ForwardIt max_element( ForwardIt first, ForwardIt last, Compare comp );

函数接受两个迭代器作为参数。第一个迭代器指向范围的开始,第二个迭代器指向范围的结束。

使用第一种函数声明的情况下,max_element会使用默认的比较函数(operator<)来比较元素大小。

使用第二种函数声明的情况下,需要传递一个比较函数作为第三个参数,用于自定义元素的比较方式。

函数返回值

max_element的返回值是一个指向范围中最大元素的迭代器。

如果指定范围为空,则函数返回last迭代器。

代码示例

下面是一个简单的例子:从一个整数数组中获取最大值。

#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    std::vector<int> nums = { 1, 2, 5, 4, 3 };

    auto max_it = std::max_element(nums.begin(), nums.end());

    std::cout << "Max value: " << *max_it << std::endl;

    return 0;
}

输出结果:

Max value: 5
自定义比较函数

下面是一个使用自定义比较函数的例子:从一个字符串数组中获取最长的字符串。

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>

bool compare_string_length(const std::string& s1, const std::string& s2)
{
    return s1.length() < s2.length();
}

int main()
{
    std::vector<std::string> strs = { "abc", "defgh", "ijklmno", "pqrstu" };

    auto max_it = std::max_element(strs.begin(), strs.end(), compare_string_length);

    std::cout << "Longest string: " << *max_it << std::endl;

    return 0;
}

输出结果:

Longest string: ijklmno

在这个例子中,我们传递了自定义比较函数 compare_string_length来告诉max_element如何比较元素,并找到最大值。