C++ std::tuple 함수 반환값을 여러개 리턴하기
- 프로그래밍/C/C++
- 2018. 10. 26.
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;
}
< 실행 결과 >
5행에서 리턴값을 두개를 받기 위해 std:tuple<"반환받을 자료형"> 반환 자료형을 해줬다.
9행에서 return 값을 해줄 때에는 std::make_tuple("변수")를 해주면 원하는 반환값을 여러개 해줄 수 있다.
첫번째 예로는
14행에서 tuple로 두가지를 받을 수 있는 자료형을 선언해준 다음 함수로 받을 수 있다.
16~17행은 출력하는 예이다.
두번째 예로는
19행에서 auto를 써서 auto[a, b] 변수를 선언해서 함수로 받을 수 있다.
20~21행은 출력하는 예이다.
tuple을 쓰면 함수에서 여러개의 반환값을 얻을 수 있다.
함수에서는 무조건 반환값은 한개만 존재한다는 개념을 깰 수 있다.