📌  相关文章
📜  在C ++ STL中查找集合中的最大和最小元素(1)

📅  最后修改于: 2023-12-03 15:07:52.117000             🧑  作者: Mango

在C++ STL中查找集合中的最大和最小元素

在C++的STL库中,有很多容器可以用来存储元素,例如数组、向量、列表等等。其中,集合(set)是一种非常特殊的容器,它具有以下特点:

  • 元素按照一定的顺序排列,常见的有升序和降序;
  • 每个元素只出现一次;
  • 查找、插入和删除元素都非常高效。

在集合中,我们可以很方便地查找出最大和最小的元素。下面介绍几种常见的方法。

方法一:使用begin()和end()

在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

值得注意的是,集合中的元素是按照升序排列的,因此最小元素就是集合中的第一个元素,最大元素就是集合中的最后一个元素。

方法二:使用front()和back()

除了使用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;
}

输出结果与上面的代码一致。

方法三:使用min_element()和max_element()

除了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中查找集合中的最大和最小元素。在实际编程中,我们可以根据需要选择合适的方法,来让自己的代码更加简洁、高效。