Максимум 2 чисел [закрыт]

110
18 мая 2019, 04:30

Как правильно написать шаблонную функцию для нахождения максимума двух чисел?

Answer 1

Я бы делал примерно так

template<typename T, typename U>
typename std::common_type<T, U>::type max(const T& a, const U& b)
{
    if (a > b) return a;
    return b;
}

Не буду утверждать, что это наилучший идеальный вариант :)

P.S. Появилась минутка, чтоб не долго мучиться, построил вариативный вариант на основе уже имеющегося:

template<typename T, typename U>
typename common_type<T,U>::type max(const T& a, const U& b)
{
    return (a > b) ? a : b;
}
template<typename T, typename U, typename ...Args>
auto max(const T& a, const U& b, Args... arg)
{
    if constexpr (sizeof...(arg) == 0)
        return max(a,b);
    return max(max(a,b),arg...);
}
Answer 2

Вот так std max:

template<class T>
const T& max(const T& a, const T& b)
{
    return (a < b) ? b : a;
}

В моей системе, в заголовнике algorithm сделано так.

namespace std {
...
template<typename _Tp, typename _Compare>
_GLIBCXX14_CONSTEXPR
inline const _Tp&
max(const _Tp& __a, const _Tp& __b, _Compare __comp)
{
    //return __comp(__a, __b) ? __b : __a;
    if (__comp(__a, __b))
        return __b;
    return __a;
}
Answer 3

Например, так:

template<typename TA, typename TB, typename TR = std::common_type_t<TA, TB>>
TR max(TA a, TB b) {
  return (a > b) ? a : b;
}
READ ALSO
Создание n объектов в цикле

Создание n объектов в цикле

Почему следующая программа не печатает "Created 10 objects" ?

95
Можно ли получить X509Certificate из .sig файла?

Можно ли получить X509Certificate из .sig файла?

Пытаюсь вытащить X509Certificate из файла подписиsig чтобы эту подпись проверить

163
Не могу создать проект в netbeans

Не могу создать проект в netbeans

При создании проекта, просто ничего не происходитВ отладке netbeans вываливаются сообщения, но разобрать я их не могу

119