std::pair, std::tuple

c++ 2015. 1. 6. 11:34

//pair =#include <utility>

//tuple =#include <tuple>

std::pair<int, std::string> pairTest;
 pairTest.first = 1;
 pairTest.second = "PAIR";
 printf("%d %s \n", pairTest.first, pairTest.second.c_str() );

 std::tuple<int, std::string, int, float> tupleTest(10, "tuple", 5, 10.0 );
 // std::get<0>(tupleTest) 튜플 원소 가져오기
 printf("%d %s %d %f \n", std::get<0>(tupleTest), std::get<1>(tupleTest).c_str(), std::get<2>(tupleTest), std::get<3>(tupleTest) );

 int a = 5;
 std::string b= "tie";
 int c = 7;
 float d = 11.0;

 // std::tie 튜플 값 가져오기
 std::tie( a, b, c, d ) = tupleTest;


 // std::make_tuple 튜플 값 복사
 tupleTest = std::make_tuple(4, "makeTuple", 6, 3.0 );
 printf("%d %s %d %f \n", std::get<0>(tupleTest), std::get<1>(tupleTest).c_str(), std::get<2>(tupleTest), std::get<3>(tupleTest) );
 printf("a = %d, b = %s, c = %d d = %f \n",  a, b.c_str(), c, d );

std::make_tuple : call-by-value

std::tie : call-by-reference

make_tuple 같은 경우는 std::move 사용

tuple의 크기는 = 가장 큰 타입크기 + (  갯수 * 가장 큰 타입 크기 )

tuple size = std::tuple_size<decltype(tupleTest)>::value;

 std::tuple<int, std::string, int, float> tupleTest2(10, "tuple", 5, 10.0 );

tuple 합치기 = std::tuple_cat(tupleTest, tupleTest2);

'c++' 카테고리의 다른 글

std::thread (2)  (0) 2015.01.06
std::thread  (0) 2015.01.06
std::chrono  (0) 2015.01.06
std::hash_map, std::unordered_map  (0) 2015.01.06
std::list, std::foward_list  (0) 2015.01.06
Posted by 에브리피플
,