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

📅  最后修改于: 2021-05-30 11:20:36             🧑  作者: Mango

给定一个Set,任务是在C++ STL中找到此Set的最大和最小元素。

例子:

Input: set={1, 6, 15, 10, 5}
Output: max = 15, min = 1

Input: set={10, 20, 30, 40, 50, 60}
Output: max = 60, min = 10
  • 使用set.begin()和set.end()方法

    方法:集合中的元素按排序顺序存储。因此,集合中的最小元素将驻留在第一个元素中,最大元素将驻留在最后一个元素中。因此,可以分别通过set.begin()和set.end()方法来获取此第一个和最后一个元素。

    程序:

    #include 
    using namespace std;
      
    // Function to print the set
    void printSet(set my_set)
    {
      
        // Print the set
        cout << "Set: ";
        for (auto i : my_set)
            cout << i << " ";
      
        cout << '\n';
    }
      
    // Function to find the maximum element
    int findMax(set my_set)
    {
      
        // Get the maximum element
        int max_element;
        if (!my_set.empty())
            max_element = *(my_set.rbegin());
      
        // return the maximum element
        return max_element;
    }
      
    // Function to find the minimum element
    int findMin(set my_set)
    {
      
        // Get the minimum element
        int min_element;
        if (!my_set.empty())
            min_element = *my_set.begin();
      
        // return the minimum element
        return min_element;
    }
      
    int main()
    {
      
        // Get the set
        set my_set;
      
        // Add the elements in the set
        my_set.insert(1);
        my_set.insert(6);
        my_set.insert(15);
        my_set.insert(10);
        my_set.insert(5);
      
        // Print the set
        printSet(my_set);
      
        // Get the minimum element
        cout << "Minimum element: "
             << findMin(my_set)
             << endl;
      
        // Get the maximum element
        cout << "Maximum element: "
             << findMax(my_set)
             << endl;
    }
    
    输出:
    Set: 1 5 6 10 15 
    Minimum element: 1
    Maximum element: 15
    
  • 使用set.rbegin()和set.rend()方法

    方法:集合中的元素按排序顺序存储。因此,集合中的最小元素将驻留在第一个元素中,最大元素将驻留在最后一个元素中。因此,可以分别通过set.rend()和set.rbegin()方法获取此第一个和最后一个元素。

    程序:

    #include 
    using namespace std;
      
    // Function to print the set
    void printSet(set my_set)
    {
      
        // Print the set
        cout << "Set: ";
        for (auto i : my_set)
            cout << i << " ";
      
        cout << '\n';
    }
      
    // Function to find the maximum element
    int findMax(set my_set)
    {
      
        // Get the maximum element
        int max_element;
        if (!my_set.empty())
            max_element = *my_set.rbegin();
      
        // return the maximum element
        return max_element;
    }
      
    // Function to find the minimum element
    int findMin(set my_set)
    {
      
        // Get the minimum element
        int min_element;
        if (!my_set.empty())
            min_element = *(--my_set.rend());
      
        // return the minimum element
        return min_element;
    }
      
    int main()
    {
      
        // Get the set
        set my_set;
      
        // Add the elements in the set
        my_set.insert(1);
        my_set.insert(6);
        my_set.insert(15);
        my_set.insert(10);
        my_set.insert(5);
      
        // Print the set
        printSet(my_set);
      
        // Get the minimum element
        cout << "Minimum element: "
             << findMin(my_set)
             << endl;
      
        // Get the maximum element
        cout << "Maximum element: "
             << findMax(my_set)
             << endl;
    }
    
    输出:
    Set: 1 5 6 10 15 
    Minimum element: 1
    Maximum element: 15
    
    想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”