В очень крутом повороте алгоритмической судьбы можно найти минимальный и максимальный элементы массива вместе быстрее, чем каждый из них в отдельности.Один из возможных алгоритмов для этого - объединить элементы друг с другом, сравнить их, а затем переместить более крупные элементы в один отборочный турнир, чтобы найти самый большой элемент, а более мелкие элементы - в другой отборочный турнир, чтобы найти наименьший элемент.Вы можете показать, что при этом будет использовано около 3n / 2 сравнений, в отличие от вычисления max и min каждый независимо, что потребует 2n сравнений.Таким образом, в этом смысле вычисление минимального и максимального значений должно потребовать примерно на 25% меньше сравнений.
Что быстрее на практике, это будет зависеть от вашего оборудования и от того, насколько хорош оптимизирующий компилятор.получил.С одной стороны, minmax_element с хорошим оптимизатором должен генерировать код, который делает меньше сравнений, что может сделать его быстрее, чем другой подход.С другой стороны, другой код настолько прост, что оптимизатор может развернуть его до некоторой глубины, а затем сойти с ума в его ускорении.Или, может быть, сравнение не так уж дорого, и другие факторы в конечном итоге станут более важными для эффективности.
Реально, хотя, если этот код не вызывается в узком цикле, и вы не профилировали код, чтобы увидеть этоэто узкое место в вашей программе, беспокоиться о вещах с таким уровнем детализации, вероятно, не стоит инвестиций (посмотрите Закон Амдала - вы можете определить, сколько или мало улучшений производительности вы получите, сосредоточившись на чем-то).Стремитесь к ясности в своем коде и оптимизируйте его, когда вам нужно.