Как создать прототип функции, который позволил бы одной функции одновременно находить и возвращать как самые низкие, так и самые высокие значения в массиве? Спасибо.Как вернуть два значения из функции?
ответ
использование stl pair data type
для возврата два значения или пользователь определить struct data type
для возврата большего значения от функции.
Или вы можете вернуть массив из функции для нескольких значений.
Существует так много способов.
typedef struct {
int a, b;
} tuple;
tuple example() {
tuple ret = {1, 2};
return ret;
}
Большое спасибо. Не думал о структурах вообще. –
Это решение C, но оно заново изобретает колесо, когда контейнеры-утилиты C++ могут выполнять одно и то же задание без явного определения собственных пользовательских типов. – ShadowRanger
Есть три возможных сценариев ..
Метод 1 использует глобальный массив.
Способ 2 использует указатель.
Способ 3 используется структура.
Вы не можете вернуть несколько значений из функции C++ с помощью переменных. Вы можете вернуть только структуру данных с несколькими значениями, такими как структура или массив.
std::pair
обложки, возвращающие два значения, std::tuple
обобщает на любое количество значений. И с std::tuple
«s std::tie
utility function, вызывающий абонент может получить результаты в отдельных переменных также избавляет от необходимости извлекать их один за другим, например:
std::tuple<int, int> returns_two()
{
return std::make_tuple(1, -1);
}
int main() {
int a, b;
std::tie(a, b) = returns_two();
// a and b are now 1 and -1, no need to work with std::tuple accessors
std::cout << "A" << a << std::endl;
}
Конечно, в этом случае, вы на самом деле не вам нужно перевернуть свой собственный код, чтобы вернуть min и max ввода, потому что есть функция шаблона, которая уже делает это, std::minmax
(для двух дискретных списков аргументов и инициализаторов) и std::minmax_element
(для диапазонов, определенных итераторами) (которые оба возвращают std::pair
и std::pair
полностью совместим с std::tuple
двух элементов).
Верните структуру из двух чисел или std :: pair. –
Может использовать массив (например, передать массив в функцию или определить глобально). – roottraveller
Возможный дубликат [возврат нескольких значений из функции] (http://stackoverflow.com/questions/3829167/returning-multiple-values-from-a-function) – roottraveller