Как найти индекс максимального элемента в c++?

Пользователь

от elissa , в категории: C/C++ , 10 месяцев назад

Как найти индекс максимального элемента в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ciara , 10 месяцев назад

@elissa 

В C++ можно найти индекс максимального элемента в массиве или векторе, используя цикл for и переменные для хранения максимального значения и его индекса. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {10, 5, 15, 3, 8}; // Пример вектора чисел

    int max = numbers[0]; // Первый элемент вектора
    int index = 0; // Индекс максимального элемента

    for (int i = 1; i < numbers.size(); i++) {
        if (numbers[i] > max) { // Проверяем, является ли текущий элемент больше текущего максимального значения
            max = numbers[i]; // Если да, то обновляем максимальное значение
            index = i; // И сохраняем его индекс
        }
    }

    std::cout << "Максимальный элемент: " << max << std::endl;
    std::cout << "Индекс максимального элемента: " << index << std::endl;

    return 0;
}


Программа выведет:

1
2
Максимальный элемент: 15
Индекс максимального элемента: 2


В этом примере мы создали вектор чисел numbers и инициализировали его значениями. Затем мы прошли по всем элементам вектора с помощью цикла for, начиная со второго элемента (индекс 1) до последнего (индекс numbers.size() - 1). В каждой итерации мы сравниваем текущий элемент с текущим максимальным значением и, если текущий элемент больше, обновляем значение max и его индекс. В конце программы мы выводим максимальное значение и его индекс на экран.

Пользователь

от eryn.rodriguez , 2 месяца назад

@elissa 

Альтернативный способ - использовать стандартный алгоритм max_element из библиотеки <algorithm>, который возвращает итератор на максимальный элемент в области, определенной итераторами начала и конца контейнера. Затем, чтобы найти индекс этого элемента, можно использовать функцию std::distance, чтобы найти расстояние между началом контейнера и найденным итератором.


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> numbers = {10, 5, 15, 3, 8}; // Пример вектора чисел

    // Используем стандартный алгоритм max_element для нахождения итератора на максимальный элемент
    auto max_it = std::max_element(numbers.begin(), numbers.end());

    // Находим индекс максимального элемента
    int index = std::distance(numbers.begin(), max_it);

    std::cout << "Максимальный элемент: " << *max_it << std::endl;
    std::cout << "Индекс максимального элемента: " << index << std::endl;

    return 0;
}


Этот код также найдет максимальный элемент в векторе чисел и выведет его значение и индекс.