Какой самый эффективный и чистый способ сравнить два целых числа в C ++? - PullRequest
0 голосов
/ 29 января 2020

Две переменные

int x, y;

будут сравниваться, и большая из них будет присвоена другой переменной,

int greatest;

Первое, что приходит на ум, это

if (x > y) { greatest = x; }
else { greatest = y; }

Есть ли другой способ, который намного более эффективен и умнее 1011 *?

1 Ответ

3 голосов
/ 29 января 2020

Стандартный заголовок <algorithm> обеспечивает стандартную функцию std::max. Одна из перегрузок для этой функции сравнивает два объекта и возвращает ссылку на самый большой из двух. В вашем случае выражение будет выглядеть следующим образом:

auto greatest = std::max(x, y)

Если есть «самый эффективный» способ получить наибольшее из двух значений, вы должны полагаться на базовую реализацию, чтобы использовать ее для себя. std::max должен реализовать лучший способ сделать это. Но даже если вы используете слабую реализацию стандартной библиотеки, которая этого не делает, компилятор все равно должен это отловить и оптимизировать.

Помните, что в c ++ ваш код описывает поведение. Это не список инструкций, которые компилятор будет выполнять дословно. Ваш код будет преобразован компилятором для реализации этих микрооптимизаций для вас там, где они, как известно, существуют.

...