Я новичок в программировании, и я изучаю язык программирования C++, используя книгу: Принципы программирования и практика с использованием C++. Я здесь сегодня, потому что в конце 8-й главе, автор сосредотачивается на функциях и предлагает упражнения, чтобы пригласить ученика думать о лучшем решении проблемы:Возвращаемые значения из функции: reference vs struct
Написать функцию, которая находит наименьшее и самый большой элемент векторного аргумента, а также вычисляет среднее и медианное. Не используйте глобальные переменные. Либо верните
struct
, содержащий результаты, либо передайте их обратно через ссылочные аргументы. Кто из двух возвращал несколько значений, вы предпочитаете и почему?
Теперь, как правило, я бы не определял одну функцию для выполнения нескольких действий, но в этом случае мне нужно создать только одну функцию и подумать о том, как вернуть несколько значений. Мой первый подход заключается в создании функции, которая принимает ссылочные аргументы так:
void my_func(
vector<double>& numbers,
double& min,
double& max,
double& mean,
double& median
);
Но происходит с написанием программы, я начал думать, что это решение используется слишком много аргументов и, возможно, другое решение, предложенное (используя struct
) было бы лучше. Как бы вы использовали struct
для решения этой проблемы? Как вы возвращаете несколько значений из функции?
Вы не возвращаете несколько значений из функции, это невозможно. Вместо этого вы возвращаете экземпляр * one * structure, содержащий несколько членов (например, члены, такие как 'min',' max' и т. Д.). –
Используйте [encapsulation] (https://en.wikipedia.org/wiki/Encapsulation_ (computer_programming)), когда это полезно и возможно. Здесь это возможно и полезно, и поэтому вы должны использовать здесь структуру (например, статистику), предложенную в ответах. – HelloWorld
Если вы используете C++ 11, вы можете взглянуть на [std :: tuple] (http://en.cppreference.com/w/cpp/utility/tuple) –