Library2010. 1. 14. 10:57


여러개의 객체를 하나로 묶어 쓸수 있다. 기존에 stl 에 pair 는 두개만 묶어서 사용했지만 tbple 은 최대 10개의 객체를 묶어서 사용할수 있다.

10 마디 말보다 1줄 코딩이 이해하기 빠르다~

#include 


using std::tr1::tuple;
using std::tr1::make_tuple;
using std::tr1::get;
using std::tr1::tie;

void Printtuple(tuple t)
{        
    std::cout << get<0>(t) << ", ";
    std::cout << get<1>(t) << ", ";
    std::cout << get<2>(t).c_str();
    std::cout << std::endl;
}

template
int GetTuplesize(const TupleSize&)
{
    return std::tr1::tuple_size::value;
}

int _tmain(int argc, _TCHAR* argv[])
{    
    //===== tuple 생성
    //일괄 생성
    tuple t = make_tuple(1, 'A', "TEST");
    Printtuple(t);
    
    //하나씩 생성
    tuple t1;
    //tuple 의 각각 원소에 접근하기 위해 get 메소드를 사용한다.
    //메소드 인자로 상수값(const)만 받을수 있어서 아쉽다.
    get<0>(t1) = 2;
    get<1>(t1) = 'B';
    get<2>(t1) = "TEST1";    
    Printtuple(t1);
    //===== tuple 생성
    
    
    //===== tuple 일괄 참조
    int n = 0;
    char c = 'C';
    std::string str = "NONE";

    //첫번째 요소만 읽고 두번째, 세번째 요소는 필요 없을 경우..
    tie(n, std::tr1::ignore, std::tr1::ignore) = t;
    std::cout << n << ", " << c << ", " << str.c_str() << std::endl;

    //모든 요소를 읽는다.
    tie(n, c, str) = t;
    std::cout << n << ", " << c << ", " << str.c_str() << std::endl;   
    //===== tuple 일괄 참조

    //===== tuple 요소 카운트
    std::cout << "size: " << GetTuplesize(t) << std::endl;
    //===== tuple 요소 카운트

    return 0;
}


실행결과:
1, A, TEST
1, B, TEST1
1, C, NONE
1, A, TEST
3

Posted by 상현달