[C++11 STL] std::tuple 개요

STL - Utilities/tuple2014. 10. 1. 01:00

 

※ 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승이 아님" );
    }
}


※결과

마땅히 할 예제가 없어서 아무거나 한거니.. 대충 이런식으로 쓰는 것만 보면 되고,

문법은 다음 게시물부터 다루도록 하겠음.




'STL - Utilities > tuple' 카테고리의 다른 글

[C++11 STL] std::tuple 개요  (0) 2014.10.01

작성자

Posted by 사용자 오뇽

태그

댓글 영역