[C++ STL] tuple 튜플

1. 튜플 생성 및 읽기

여러 개의 데이터 형을 하나의 컨테이너에 선언

생성 예시는 아래와 같다.

tuple<int, string, string> tpTest01 = tuple<int, string, string>( 1, "하나", "one" );
tuple<int, string, string> tpTest02 = make_tuple( 2, "둘", "two" );

값을 읽기 위해 아래와 같이 get<>()을 사용하면 된다.

get<N번째 인자>( 컨테이너 변수 )

값 읽기 예시)

cout << "tpTest01 : (" << get<0>( tpTest01 ) << ", " << get<1>( tpTest01 ) << ", " << get<2>( tpTest01 ) << ")" << endl << endl;
cout << "tpTest02 : (" << get<0>( tpTest02 ) << ", " << get<1>( tpTest02 ) << ", " << get<2>( tpTest02 ) << ")" << endl << endl;
2. tie 함수 사용

tie 함수를 사용하여 tuple을 생성할 수 있다.

int iNo = 3;
string strKo = "셋";
string strEn = "three";
tuple<int, string, string> tpTest03 = tie( iNo, strKo, strEn );

tie는 참조로 반환하기 때문에 아래와 같이 사용하면, iNo, strKo, strEn 변수 값이 변경된다.

tuple<int, string, string> tpTest04 = make_tuple( 4, "넷", "four" );
tie( iNo, strKo, strEn ) = tpTest04;
cout << "iNo(" << iNo << "), strKo(" << strKo << "), strEn(" << strEn << ")" << endl << endl;
3. tuple_cat으로 두개의 tuple 합치기

두 개의 tuple을 합친 tuple을 만들고 싶을때 아래와 같이 tuple_cat을 사용하면 된다.

tuple<int, string, string> tpTest05_1 = make_tuple( 5, "오", "five" );
tuple<int, float> tpTest05_2 = make_tuple( 5, 5.0f );
tuple<int, string, string, int, float> tpCatTest = tuple_cat( tpTest05_1, tpTest05_2 );
4. 전체 코드
#include <iostream>
#include <tuple>

#include <string>
#include <float.h>

using namespace std;

void main()
{
	tuple<int, string, string> tpTest01 = tuple<int, string, string>( 1, "하나", "one" );
	tuple<int, string, string> tpTest02 = make_tuple( 2, "둘", "two" );

	cout << "tpTest01 : (" << get<0>( tpTest01 ) << ", " << get<1>( tpTest01 ) << ", " << get<2>( tpTest01 ) << ")" << endl << endl;
	cout << "tpTest02 : (" << get<0>( tpTest02 ) << ", " << get<1>( tpTest02 ) << ", " << get<2>( tpTest02 ) << ")" << endl << endl;

	int iNo = 3;
	string strKo = "셋";
	string strEn = "three";
	tuple<int, string, string> tpTest03 = tie( iNo, strKo, strEn );
	cout << "tpTest03 : (" << get<0>( tpTest03 ) << ", " << get<1>( tpTest03 ) << ", " << get<2>( tpTest03 ) << ")" << endl << endl;

	tuple<int, string, string> tpTest04 = make_tuple( 4, "넷", "four" );
	tie( iNo, strKo, strEn ) = tpTest04;
	cout << "iNo(" << iNo << "), strKo(" << strKo << "), strEn(" << strEn << ")" << endl << endl;

	tuple<int, string, string> tpTest05_1 = make_tuple( 5, "오", "five" );
	tuple<int, float> tpTest05_2 = make_tuple( 5, 5.0f );
	tuple<int, string, string, int, float> tpCatTest = tuple_cat( tpTest05_1, tpTest05_2 );
	cout << "tpCatTest : (" << get<0>( tpCatTest ) << ", " << get<1>( tpCatTest ) << ", " << get<2>( tpCatTest ) << ", ";
	cout << get<3>( tpCatTest ) << ", " << get<4>( tpCatTest ) << ")" <<endl << endl;

	system( "pause" );
}