📅  最后修改于: 2023-12-03 14:51:14.921000             🧑  作者: Mango
在C++ STL中,有很多函数可以方便地查找集合中的最大和最小元素。
可以使用std::max_element
函数来查找集合中的最大元素。它接受两个迭代器作为参数,返回指向集合中最大元素的迭代器。
以下是一个示例程序:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums {1, 2, 3, 4, 5};
auto max_num = std::max_element(nums.begin(), nums.end());
std::cout << "The maximum element is " << *max_num << std::endl;
return 0;
}
输出如下:
The maximum element is 5
注意,std::max_element
返回的是一个迭代器,因此我们需要使用*
解引用操作符来访问它所指向的元素。
同样地,可以使用std::min_element
函数来查找集合中的最小元素。它也接受两个迭代器作为参数,返回指向集合中最小元素的迭代器。
以下是一个示例程序:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums {1, 2, 3, 4, 5};
auto min_num = std::min_element(nums.begin(), nums.end());
std::cout << "The minimum element is " << *min_num << std::endl;
return 0;
}
输出如下:
The minimum element is 1
同样需要使用*
解引用操作符访问所指向的元素。
如果我们需要同时查找一个集合中的最大和最小元素,可以使用std::minmax_element
函数。它也接受两个迭代器作为参数,但返回一个std::pair
对象,其中first
元素是指向最小元素的迭代器,second
元素是指向最大元素的迭代器。
以下是一个示例程序:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums {1, 2, 3, 4, 5};
auto minmax_num = std::minmax_element(nums.begin(), nums.end());
std::cout << "The minimum element is " << *(minmax_num.first) << std::endl;
std::cout << "The maximum element is " << *(minmax_num.second) << std::endl;
return 0;
}
输出如下:
The minimum element is 1
The maximum element is 5
需要注意的是,我们需要使用std::pair
对象的first
和second
成员来访问最小和最大元素所在的迭代器,而且需要对迭代器进行解引用操作才能获得对应的元素。