C++ STL 中的 max_element

2025 年 5 月 22 日 | 阅读 6 分钟

STL 是标准模板库的缩写,其中包含多种功能代码。在 C++ 中,max_element 或 std::max_element() 是标准模板库中提供的一种算法,它主要用于检索给定范围(例如数组向量和多个容器)中可用的最大元素。因此,无论何时我们想要从给定的输入范围中获取最大值,我们都可以直接调用 max_element() 方法。

语法

它具有以下语法:

在这个语法中,

  • Start: 它表示范围的起始点。
  • End: 它表示范围的结束点。
  • Compare comp: 它表示一个二元比较器函数、函数对象和 lambda 表达式,用于比较给定范围中的两个元素。

返回值

  • 它返回一个指向给定范围中最大元素的迭代器。
  • 如果给定范围为空,它返回指向末尾的迭代器。

示例 1:在给定范围内查找最大元素

让我们举一个例子来说明如何在给定范围内查找最大元素

示例

编译并运行

输出

The maximum value present is:
17
The maximum value present is:
89

说明

在此示例中,我们初始化了两个整数数组,即数组 a 和 arr。之后,将大小值存储在两个数组的变量 n1 和 n2 中。最后,我们逐个在两个数组上调用了 max_element()。max_element() 在 STL 中可用,因此我们包含了 <bits/stdc++.h> 头文件。我们成功地从给定的输入值中获取了最大值。

示例 2:在给定向量中查找最大元素

让我们举一个例子来演示如何在给定向量中查找最大元素,我们将查找除以 5 后余数最大的元素

示例

编译并运行

输出

The maximum value present is:
4 
The maximum value present is:
3

说明

在此示例中,我们初始化了两个向量,given 和 given1。接下来,我们创建了一个布尔方法,当 x 除以 5 后的余数较小时返回 true。之后,我们逐个在两个向量上调用了 max_element(),并且这里我们使用了 begin() 和 end() 方法。这三种方法都在 STL 中预定义,因此我们在代码中包含了 <bits/stdc++.h>。通过这些,我们还向代码传递了 calc() 方法作为参数。

示例 3:在给定向量中查找最大值和绝对最大值

让我们举一个例子来查找最大元素值并打印找到它的索引值,同时查找绝对最大值并打印它的索引值。

示例

编译并运行

输出

The max value is present at index 3 containing value 19
The Absolute max value is present at index 4 containing value -23

说明

在此示例中,我们初始化了两个向量。之后,我们在输入向量上调用了 max_element() 方法。我们使用 distance() 方法从输入向量中获取最大值。之后,我们调用 max_element() 方法从输入向量中获取绝对最大值。最后,我们调用 abs() 方法获取绝对值并返回该值。

示例 4:在向量结构中查找最大元素

让我们举一个例子来查找向量结构中的最大元素。

示例

编译并运行

输出

The maximum value present is John having roll number 101

说明

在此示例中,我们使用名字和学号作为值初始化了一个结构。接下来,我们为上述结构创建了一个向量。之后,我们使用 max_element() 方法根据学号从我们创建的结构向量中获取最大值。

结论

总而言之,max_element() 函数提供了一种有效的方法来查找范围中的最大元素。当与自定义比较器或 lambda 表达式结合使用时,它尤其有用。如果我们正在使用原始数据类型或用户定义类,max_element() 简化了查找最大值的过程。

C++ Max_element 函数 MCQ

1) max_element() 方法的返回类型是什么?

  1. 最大元素的索引值
  2. 可用的最大值
  3. 最大元素的计数
  4. 指向最大值的迭代器
 

答案: d) 指向最大值的迭代器


2) 要使用 max_element () 方法,我们应该包含哪个头文件?

  1. < utility >
  2. < algorithm >
  3. < vector >
  4. < iostream >
 

答案: b) <algorithm >


3) 给定代码的输出将是什么?

  1. 4
  2. 9
  3. 2
  4. 7
 

答案: b) 9


4) C++ 中 max_element() 方法的时间复杂度是多少?

  1. O (1)
  2. O (n)
  3. O (log n)
  4. O (n log n)
 

答案: b) O (n)


5) 如果我们在 C++ 中向 max_element () 方法提供一个空范围,会发生什么?

  1. 它会抛出异常
  2. 它将返回存在的第一个元素
  3. 它将返回一个空指针
  4. 它将返回一个等于 end 迭代器的迭代器
 

答案: d) 它将返回一个等于 end 迭代器的迭代器