Существует ли предпочтительный способ возврата нескольких значений из функции C++? Например, представьте себе функцию, которая делит два целых числа и возвращает частное и остаток. Один из способов, который я обычно вижу, — это использование ссылочных параметров:
Код: Выделить всё
void divide(int dividend, int divisor, int& quotient, int& remainder);
Вариант — вернуть одно значение и передать другое через ссылочный параметр:
Код: Выделить всё
int divide(int dividend, int divisor, int& remainder);
Другой способ — объявить структуру, содержащую все результаты, и вернуть ее:
Код: Выделить всё
struct divide_result {
int quotient;
int remainder;
};
divide_result divide(int dividend, int divisor);
Какой из этих способов обычно предпочтителен или есть другие предложения?
Изменить: в реальном коде может быть более двух результатов. Они также могут быть разных типов.
Подробнее здесь:
https://stackoverflow.com/questions/321 ... c-function