How to find the two largest elements in a vector with C++

1 Answer

0 votes
#include <iostream>
#include <vector>
#include <limits>
#include <stdexcept>

/*
    Finds the two largest elements in a vector.

    Parameters:
        numbers - Input vector

    Returns:
        A pair containing:
        - first  -> largest element
        - second -> second largest element
*/
std::pair<int, int> findTwoLargest(const std::vector<int>& numbers)
{
    if (numbers.size() < 2) {
        throw std::invalid_argument(
            "Vector must contain at least two elements."
        );
    }

    int largest = std::numeric_limits<int>::min();
    int secondLargest = std::numeric_limits<int>::min();

    for (int value : numbers)
    {
        if (value > largest) {
            secondLargest = largest;
            largest = value;
        }
        else if (value > secondLargest) {
            secondLargest = value;
        }
    }

    return {largest, secondLargest};
}

int main()
{
    std::vector<int> numbers = {3, 4, 9, 6, 7, 1, 2, 5};

    auto [largest, secondLargest] = findTwoLargest(numbers);

    std::cout << "Vector: ";

    for (int value : numbers) {
        std::cout << value << ' ';
    }

    std::cout << "\nLargest element: " << largest << '\n';
    std::cout << "Second largest element: " << secondLargest << '\n';
}



/*
run:

Vector: 3 4 9 6 7 1 2 5 
Largest element: 9
Second largest element: 7

*/

 



answered 19 hours ago by avibootz
...