C++ std::tuple 함수 반환값을 여러개 리턴하기


C++ std::tuple 함수 반환값을 여러개 리턴하기


보통 함수를 사용하게 되면 반환값은 하나만 나오게 되어 있다.

근데 C++17에서는 std::tuple 이라는 것이 나왔으며 tuple 사용하게 되면 반환값을 여러개 리턴할 수 있다.


std::tuple을 사용하지 않고 struct를 사용해서 여러개 받을 수 있지만 tuple을 사용해보자.

#include <iostream>
#include <tuple>
using namespace std;
 
std::tuple<int, double> getTuple()
{
    int a = 10;
    double d = 3.14;
    return std::make_tuple(a, d);
}
 
int main()
{
    std::tuple<int, double> my_tp = getTuple();
 
    cout << std::get<0>(my_tp) << endl; // a
    cout << std::get<1>(my_tp) << endl; // b
    // 첫번째 예 -------------------------
    auto[a, d] = getTuple();
    cout << a << endl;
    cout << d << endl;
 
    return 0;
}

< 실행 결과 >


2행을 보면 tuple 사용하기 위해서 tuple 헤더파일을 include 해줬다.
5행에서 리턴값을 두개를 받기 위해 std:tuple<"반환받을 자료형"> 반환 자료형을 해줬다.
9행에서 return 값을 해줄 때에는 std::make_tuple("변수")를 해주면 원하는 반환값을 여러개 해줄 수 있다.

첫번째 예로는
14행에서 tuple로 두가지를 받을 수 있는 자료형을 선언해준 다음 함수로 받을 수 있다.
16~17행은 출력하는 예이다.

두번째 예로는
19행에서 auto를 써서 auto[a, b] 변수를 선언해서 함수로 받을 수 있다.
20~21행은 출력하는 예이다.

tuple을 쓰면 함수에서 여러개의 반환값을 얻을 수 있다.
함수에서는 무조건 반환값은 한개만 존재한다는 개념을 깰 수 있다.




댓글

Designed by JB FACTORY