[C++] Tuple(튜플) 기본 사용.

빵욱·2025년 1월 15일

Tuple기본 사용법에 대한 정리.

#include <iostream>
#include <tuple>
#include <type_traits>

using namespace std;

int main()
{
	// Tuple 생성
	tuple<string, int, int> tplTest;
	// 요쇼에 접근 후 값 할당.
	get<0>(tplTest) = "Name";
	get<1>(tplTest) = 1;
	get<2>(tplTest) = 2;

	cout << get<0>(tplTest) << ", " << get<1>(tplTest) << ", " << get<2>(tplTest) << endl; // 

	// 생성2.
	tuple<string, char> tplStr("test", 't');

	// 생성3.
	auto tplMakeTpl = std::make_tuple(10, 20.5, "Hello World");



	// 접근
	// Use std::get
	// std::get<인덱스>(튜플)
	int nNum = get<0>(tplMakeTpl);
	double dValue = get<1>(tplMakeTpl);
	string strHello = get<2>(tplMakeTpl);


	cout << nNum << ", " << dValue << ", " << strHello << endl; // 


	// std::tie 를 이용한 할당.
	int x;
	double y;
	auto tplNumbers = make_tuple<int, double>(1, 2.2);

	tie(x, y) = tplNumbers;


	cout << x << ", " << y << endl; // 


	// 구조적 바인딩 (C++17 이상)
	auto tplNumbers2 = make_tuple<int, int, double>(1, 2, 3.3);
	auto [num1, num2, dNum1] = tplNumbers2;

	cout << num1 << ", " << num2 << ", " << dNum1 << endl; // 


	// Tuple size.
	size_t size = tuple_size<decltype(tplNumbers2)>::value;
	cout << "Tuple size: " << size << endl; // Tuple size: 3


	// Tuple element type.
	using ElementType = tuple_element<1, decltype(tplNumbers2)>::type;
	static_assert(is_same< ElementType, int>::value, "Type mismach!");
}

static_assert 에서 타입이 일치하지 않으면 컴파일 타임에 아래와 같이 메시지가 나옴
(VS 2022기준)

error C2338: static_assert failed: 'Type mismach!'
profile
rove drink eat

0개의 댓글