C'è una serie di miglioramenti che possono essere fatte.
È possibile utilizzare le funzioni standard per renderlo più chiaro:
// Notice I made the return type an int instead of a float,
// since you're passing in ints
int smallest(int x, int y, int z){
return std::min(std::min(x, y), z);
}
O meglio ancora, come sottolineato nei commenti:
int smallest(int x, int y, int z){
return std::min({x, y, z});
}
Se si vuole operare su qualsiasi numero di int , si potrebbe fare qualcosa di simile:
int smallest(const std::vector<int>& intvec){
int smallest = std::numeric_limits<int>::max(); // Largest possible integer
// there are a number of ways to structure this loop, this is just one
for (int i = 0; i < intvec.size(); ++i)
{
smallest = std::min(smallest, intvec[i]);
}
return smallest;
}
si potrebbe anche rendere più generico in modo che sarà operat e su qualsiasi tipo, invece di INT
template <typename T>
T smallest(const std::vector<T>& vec){
T smallest = std::numeric_limits<T>::max(); // Largest possible integer
// there are a number of ways to structure this loop, this is just one
for (int i = 0; i < vec.size(); ++i)
{
smallest = std::min(smallest, vec[i]);
}
return smallest;
}
haha cosa succede se nessuno dei valori sono più piccole di 99999? ha. – L7ColWinters
@jogojapan o meglio che iniziare con 'INT_MAX' (o'std :: numeric_limits :: max()' solo iniziare con il primo numero ... –
Non sono sicuro che fosse una buona idea chiudere questo a causa di il contesto C++ Mi piacerebbe vedere la discussione generica nel duplicato citato, e mi piacerebbe anche vedere la discussione in C++ con i modelli e la meta-programmazione, e la discussione in C++ 11 con 'constexpr'. un duplicato migliore, anche se il suo 'max' invece di' min': [Il modo più efficace per trovare il massimo di tre inte] (http://stackoverflow.com/q/2233166/608639). Sembra migliore perché il suo C++ specifico, ma manca un buon trattamento di modelli, meta programmazione e 'constexpr'. – jww