Study/Language
[C++11 STL] std::tuple 개요
Arq.Dev5igner
2022. 2. 25. 17:49
※ std::tuple 요약
TR1부터 새롭게 추가된 std::tuple은 C++98에서 기본 제공하던 std::pair의 확장 버전으로써,
컴파일 시간에 명시되거나 추론될 수 있는 데이터형 요소들을 가지는 이종 목록(heterogeneous list)이다.
TR1인 Visual Studio 2010에서는 10개의 요소를 저장할 수 있고
C++11을 부분 지원하는 Visual Studio 2013부터는 저장 가능한 항목 개수에 제한이 없고
각각의 항목마다 개별 타입으로 지정 가능하다.
※ std::tuple 특징
std::tuple은 주로, 함수에서 2개 이상의 값을 반환해야할 때 사용한다.
기존에는 구조체를 이용하여 2개 이상의 값을 리턴했지만, 단순히 2개 이상의 값을 반환하기 위해
구조체를 만드는 것은 귀찮을 때도 있고 배보다 배꼽이 더 커지는 일이다.
※ 필요한 헤더 파일
#include <tuple>
#include <iostream>
#include <string>
#include <tuple>
using namespace std;
enum { GET_STATE=0, GET_DESCRIPTION };
std::tuple<bool, string> CheckPowerOfTwo( const int nNum );
int main( )
{
std::tuple<bool, string> tupleTest = CheckPowerOfTwo( 8 );
//결과에 따른 문구 출력
cout<<std::get<GET_DESCRIPTION>(tupleTest)<<endl;
if( std::get<GET_STATE>(tupleTest) == true )
{
//2의 n승이 맞다면 추가 작업
}
else
{
//2의 n승이 아니라면 작업하지 않음
}
return 0;
}
std::tuple<bool, string> CheckPowerOfTwo( const int nNum )
{
int nResult = nNum & (nNum-1);
if( nResult == 0 )
{
return std::make_tuple( true, "2의 n승이 맞음" );
}
else
{
return std::make_tuple( false, "2의 n승이 아님" );
}
}