Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Как вернуть через функцию два значения в C++?

#cpp #функции


Суть :
Допустим у нас есть функция, в результате выполнения действий внутри нее мы получаем
значения переменных, которые нам необходимо вернуть. Как это сделать? И как при вызове
присвоить эти значения двум переменным одновременно?
    


Ответы

Ответ 1



Варианты: вернуть структуру или кортеж (пару) с двумя полями использовать передачу параметров по ссылке или через указатель. Например, считать сумму и разность двух переменных: std::pair sumdif(ina a, int b) { return pair(a+b,a-b); } void sumdif(int a, int b, int& sum, int& dif) { sum = a+b; dif = a-b; } ... int a = 5, b = 7; auto p = sumdif(a,b); cout << "Sum = " << p.first << ", Dif = " << p.second << endl; или int a = 5, b = 7, s, d; sumdif(a,b,s,d); cout << "Sum = " << s << ", Dif = " << d << endl;

Ответ 2



Дополню ответ @Harry Если под рукой компилятор с поддержкой 11 ого (и выше) стандарта, то можно воспользоваться std::tuple и вернуть его из функции, эдакое обобщение на std::pair для произвольноно числа элементов с разными типами std::tuple f() { std::tuple t = { -1, 123 }; // ... return t; } std::tuple g() { std::tuple t = { -1, false, 123 }; // ... return t; }

Комментариев нет:

Отправить комментарий