@specsoftdev live:.cid.8e17e9b93cabb607 specsoftdev@gmail.com
std::minmax
ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для C++23.

#include <algorithm>
ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π½Π° 2024-03-18.



Define overload #1
template<class T>
constexpr pair<const T&, const T&>
minmax(const T& a, const T& b);

ВычисляСт наимСньшСС ΠΈ наибольшСС ΠΌΠ΅ΠΆΠ΄Ρƒ a ΠΈ b.
АргумСнты a ΠΈ b ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° "<".
Π’Π΅Ρ€Π½Ρ‘Ρ‚ ΠΏΠ°Ρ€Ρƒ ссылок; first ссылаСтся Π½Π° минимальноС, Π° second Π½Π° максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
Example, possible implementation
Define overload #2
template<class T, class Compare>
constexpr pair<const T&, const T&>
minmax(const T& a, const T& b, Compare comp);

ВычисляСт наимСньшСС ΠΈ наибольшСС ΠΌΠ΅ΠΆΠ΄Ρƒ a ΠΈ b.
АргумСнты a ΠΈ b ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π° "comp".
Π’Π΅Ρ€Π½Ρ‘Ρ‚ ΠΏΠ°Ρ€Ρƒ ссылок; first ссылаСтся Π½Π° минимальноС, Π° second Π½Π° максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
Example, possible implementation
Define overload #3
template<class T> constexpr
pair<T, T> minmax(initializer_list<T> t);

Π˜Ρ‰Π΅Ρ‚ наимСньшСС ΠΈ наибольшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² списскС t.
ЗначСния ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° "<".
Π’Π΅Ρ€Π½Ρ‘Ρ‚ ΠΏΠ°Ρ€Ρƒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ минимальноС ΠΈ максимальноС значСния.
Example, possible implementation
Define overload #4
template<class T, class Compare> constexpr
pair<T, T> minmax(initializer_list<T> t, Compare comp);

Π˜Ρ‰Π΅Ρ‚ наимСньшСС ΠΈ наибольшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² списскС t.
ЗначСния ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π° "comp".
Π’Π΅Ρ€Π½Ρ‘Ρ‚ ΠΏΠ°Ρ€Ρƒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ минимальноС ΠΈ максимальноС значСния.
Example, possible implementation


Examples


Example 1:
#include <iostream>
#include <algorithm>

int main()
{
    auto data = {2, 2, 3, 4, 5, 6, 7, 7, 4, 4};
    auto res = std::minmax(data);
    std::cout << res.first << '\n' << res.second << std::endl;
    return 0;
}

2
7



Changelog



See also

TODO

This page was last modified on 2024-03-18