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

Пользователь

от otha_marks , в категории: C/C++ , год назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rachel , год назад

@otha_marks 

В C++ можно вернуть два значения через кортеж (std::tuple). Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include <tuple>
#include <iostream>

std::tuple<int, double> foo() {
    int a = 1;
    double b = 2.5;
    return std::make_tuple(a, b);
}

int main() {
    auto result = foo();
    int a = std::get<0>(result);
    double b = std::get<1>(result);
    std::cout << a << " " << b << std::endl;
    return 0;
}


В этом примере функция foo() возвращает кортеж из двух значений: int и double. В функции main() результат вызова foo() сохраняется в переменную result, после чего значения из кортежа извлекаются с помощью функции std::get() и сохраняются в переменные a и b соответственно.

Пользователь

от leila.dickinson , 4 месяца назад

@otha_marks 

Дополнительно к кортежам, можно также использовать ссылки или передать указатели на переменные, в которые нужно вернуть результаты. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include <iostream>

void foo(int& a, double& b) {
    a = 1;
    b = 2.5;
}

int main() {
    int a;
    double b;
    foo(a, b);
    std::cout << a << " " << b << std::endl;
    return 0;
}


В этом примере, функция foo принимает ссылки на переменные a и b, а затем устанавливает значения для этих переменных. В функции main, передаются ссылки на переменные для получения значений.