Thinking Different

Boost.Tuple & std::pair

boost2015.05.03 00:07



boost::tuple

std::pair (2개까지 데이터타입을 담을 수 있는) 의 일반화 버전

동시에 담을 수 있는 서로 다른 데이터 타입의 갯수가 최대 10개까지 가능

std::pair와 인터페이스는 동일하며 갯수만 늘어난 장점

구조체 코드를 일일이 작성하지 않고 간단하게 대체 사용할 수 있다


boost::make_tuple

tuple 을 대입하여 생성


boost::tuple::tie

변수에 tuple의 내용을 읽어냄


boost::tuple::get

값의 대입 및 참조 또는 읽기



간단히 먼저 코드를 통해 std::pair 의 활용법에 대해서 알아보자. 

너무 간단한 코드이므로 누구나 다 보고 쉽게 이해할 수 있을것이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "stdafx.h"
 
#include <utility>
#include <string>
 
int _tmain(int argc, _TCHAR* argv[])
{
    // pair 생성
    pair<int, string> p(10, "KOREA");
    pair<int, string> p2 = make_pair(20, "GOOD");
 
    // get을 활용한 참조
    cout << tr1::get<0>(p) << endl;
    cout << tr1::get<1>(p2) << endl;
 
   // get을 활용한 대입
    tr1::get<1>(p2) = "ok";
 
    // 값 입력
    p.first = 300;
    p2.second = "NICE";
 
    // 값 출력
    cout << p.first << " : " << p.second << endl;
    cout << p2.first << " : " << p2.second << endl;
 
    return 0;
}






boost::tuple도 std::pair와 거의 동일하며, element의 갯수가 최대 10개까지 가능하다는 것이다.

(pair는 무조건 한쌍으로 2개의 element를 가져야 한다) tuple의 경우 1개부터 최대 10개까지 가능하다)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "stdafx.h"
 
#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
 
int _tmain(int argc, _TCHAR* argv[])
{
    // tuple 생성
    boost::tuple<string, intfloat> a("cat", 4, 3.5f);
    boost::tuple<string, intfloat> b = boost::make_tuple("good", 10, 25.7f);
 
    // get을 활용한 참조
    cout << a.get<0>() << endl;
    cout << boost::get<0>(b) << endl;
 
    // get을 활용한 대입
    a.get<0>() = "dog";
 
    // tuple_io 값 출력
    cout << b << endl;
 
    string s;
    int aa;
    float bb;
 
    // 변수에 tuple 값 출력
    boost::tie(s, aa, bb) = a;
    
    // tie로 읽은 변수 값 출력
    cout << s << endl;
 
    return 0;
}




'boost' 카테고리의 다른 글

Boost.Swap  (0) 2015.05.06
Boost.Array  (0) 2015.05.04
Boost.Tuple & std::pair  (0) 2015.05.03
Boost.Function  (0) 2015.05.01
Boost.Bind  (0) 2015.04.30
Boost.Ref  (0) 2015.04.30

댓글 0

Prev 1 2 3 4 5 6 7 8 ··· 15 Next