Istnieje szereg ulepszeń, które mogą być wykonane.
Można użyć standardowych funkcji, aby uczynić go bardziej zrozumiałym:
// 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);
}
Albo jeszcze lepiej, jak wskazano w uwagach:
int smallest(int x, int y, int z){
return std::min({x, y, z});
}
Jeśli chcesz, aby działać na dowolnej liczbie wskazówki , można zrobić coś takiego:
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;
}
można również zrobić to generic tak że będzie ona operat e na wszelkiego rodzaju, a nie tylko wskazówki
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 co, jeśli żadna z wartości są mniejsze niż 99999? ha. – L7ColWinters
@jogojapan lub lepiej niż zaczynające się od 'INT_MAX' (or'std :: numeric_limits :: max()' po prostu zacząć od pierwszego numeru ... –
nie jestem pewien, że to dobry pomysł, aby zamknąć to spowodowane kontekst C++ Chciałbym zobaczyć ogólną dyskusję w cytowanym dupku, a także chciałbym zobaczyć dyskusję w C++ za pomocą szablonów i meta-programowania oraz dyskusję w C++ 11 z 'constexpr'. lepszy dup, nawet jeśli jego 'max' zamiast' min': [Najbardziej efektywny sposób na znalezienie największego z trzech intów] (http://stackoverflow.com/q/2233166/608639). Wygląda lepiej, ponieważ jego C++ . specyficzne, ale brakuje mu dobrego traktowania szablonów, programowanie meta i 'constexpr' – jww