Determine the largest number among three numbers using C++

Viewed 816

How can I determine the largest number among three numbers using C++?

I need to simplify this

 w=(z>((x>y)?x:y)?z:((x>y)?x:y));

Conditionals do not simplify this.

5 Answers

Starting from C++11, you can do

w = std::max({ x, y, z });
w = std::max(std::max(x, y), z);

is one way.

big = a > b ? (a > c ? a : c) : (b > c ? b : c) ;

Use the simple if condition

int w = x;

if(y > w)
  w = y;
if(z > w)
  w = z;

Where w is the max among three.

A variant on oisyn's answer (use an initializer list) and Bathesheba's answer (invoke no copies) is to use std::ref to create an initializer list of references, and then use std::max normally:

using std::ref;
w = std::max({ref(x), ref(y), ref(z)});

This is only advantageous if creating a reference is cheaper than creating a copy (and it isn't for primitives like int)

Demo

Related