max_element
和 min_element
是 C++ 标准库 <algorithm>
中的函数,用于在容器(如 vector、数组等)中找到最大和最小元素的迭代器(或指针)。
max_element 函数
template< class ForwardIt >
ForwardIt max_element( ForwardIt first, ForwardIt last );
- 功能:在给定范围
[first, last)
内查找最大元素的迭代器。 - 参数:
first
:指向要搜索的范围的起始位置的迭代器。last
:指向要搜索的范围的末尾位置的迭代器,不包括在搜索范围内。
- 返回值:返回一个迭代器,指向范围内最大元素的位置。如果范围为空,则返回
last
。
min_element 函数
template< class ForwardIt >
ForwardIt min_element( ForwardIt first, ForwardIt last );
- 功能:在给定范围
[first, last)
内查找最小元素的迭代器。 - 参数:
first
:指向要搜索的范围的起始位置的迭代器。last
:指向要搜索的范围的末尾位置的迭代器,不包括在搜索范围内。
- 返回值:返回一个迭代器,指向范围内最小元素的位置。如果范围为空,则返回
last
。
使用示例
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {3, 1, 4, 1, 5, 9, 2, 6, 5};
auto max_it = std::max_element(vec.begin(), vec.end());
auto min_it = std::min_element(vec.begin(), vec.end());
std::cout << "Max element: " << *max_it << " at index: " << std::distance(vec.begin(), max_it) << std::endl;
std::cout << "Min element: " << *min_it << " at index: " << std::distance(vec.begin(), min_it) << std::endl;
return 0;
}
注意事项
- 如果容器为空,则
max_element
和min_element
都会返回迭代器last
,这时需要特别处理空容器的情况。 - 在处理大容器时,这些函数效率高,时间复杂度为
O(n)
,其中n
是范围内元素的数量。