📅  最后修改于: 2023-12-03 15:07:52.117000             🧑  作者: Mango
在C++的STL库中,有很多容器可以用来存储元素,例如数组、向量、列表等等。其中,集合(set)是一种非常特殊的容器,它具有以下特点:
在集合中,我们可以很方便地查找出最大和最小的元素。下面介绍几种常见的方法。
在STL库中,集合的begin()函数返回一个迭代器,指向集合中第一个元素,end()函数返回一个迭代器,指向集合中最后一个元素的下一个位置。因此,我们可以使用如下代码来查找集合中的最大和最小元素:
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> s = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int min_element = *s.begin();
int max_element = *(--s.end());
cout << "The minimum element is " << min_element << endl;
cout << "The maximum element is " << max_element << endl;
return 0;
}
输出结果为:
The minimum element is 1
The maximum element is 9
值得注意的是,集合中的元素是按照升序排列的,因此最小元素就是集合中的第一个元素,最大元素就是集合中的最后一个元素。
除了使用begin()和end()函数来查找集合中最大和最小元素,还可以使用front()函数和back()函数。这两个函数分别返回集合中的第一个元素和最后一个元素,代码如下:
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> s = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int min_element = *s.begin();
int max_element = *(--s.end());
cout << "The minimum element is " << s.front() << endl;
cout << "The maximum element is " << s.back() << endl;
return 0;
}
输出结果与上面的代码一致。
除了STL库中提供的基本函数以外,还有一些STL算法可以用来处理集合。其中,min_element()和max_element()函数可以用来查找集合中的最小和最大元素,代码如下:
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
int main() {
set<int> s = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int min_element = *min_element(s.begin(), s.end());
int max_element = *max_element(s.begin(), s.end());
cout << "The minimum element is " << min_element << endl;
cout << "The maximum element is " << max_element << endl;
return 0;
}
输出结果同样是:
The minimum element is 1
The maximum element is 9
使用min_element()和max_element()函数虽然看上去比较繁琐,但是它们在其他情况下也会非常实用。例如,当我们需要查找集合中的一个特定元素时,可以使用STL算法中的find()函数,如下所示:
set<int> s = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
auto it = find(s.begin(), s.end(), 9);
if (it != s.end()) {
cout << "Found " << *it << endl;
} else {
cout << "Element not found" << endl;
}
输出结果为:
Found 9
本文介绍了如何在C++ STL中查找集合中的最大和最小元素。在实际编程中,我们可以根据需要选择合适的方法,来让自己的代码更加简洁、高效。