Boost.Tuple & std::pair
프로그래밍 언어/boost2015. 5. 3. 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, int, float> a("cat", 4, 3.5f); boost::tuple<string, int, float> 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.Function (0) | 2015.05.01 |
Boost.Bind (0) | 2015.04.30 |
Boost.Ref (0) | 2015.04.30 |