본문 바로가기
프로그래밍/boost

boost::tuple / tuples / tuples::tuple

by neive 2012. 11. 6.
728x90

 



여러개의 변수를 주고 받거나 동시에 다뤄야할 때 유용한-
대표적으로 변수는 하나 넘겨줘야되는데 많은 양의 정보를 넘겨줄 때 유용 할 것 같네요


예제 소스


#include "stdafx.h"

#include <REGEX>
#include <TUPLE>
#include <BOOST/tuple.hpp/tuple>
#include <BOOST/function.hpp>
#include <TYPEINFO>
#include <IOSTREAM>

class CTest
{
	int m_nVal;
public:
	CTest() : m_nVal(0) {}
	CTest(int n) : m_nVal(n) {}
};

// 생성 및 초기화
boost::tuple<> t0;
boost::tuple<INT> t1;
boost::tuple<INT> t2(3);				// 3으로 초기화

boost::tuple<CTEST> t3;
boost::tuple<CTEST> t4(CTest(1));	// 1로 초기화
boost::tuple<INT> t5(t2);			// 3 으로 초기화
boost::tuple<FLOAT> t6(t2);			// 3.0 으로 초기화
boost::tuple<CTEST, int> t7(1, 2);	// 1, 2 로 초기화

void foo(boost::tuple<> val)
{

}

int _tmain(int argc, _TCHAR* argv[])
{
	// 함수 내에서의 초기화 및 변수 적용
	{
		int i = 2011;
		int& j = i;
		boost::tuple<INT, float> t1(boost::make_tuple(1, 3.14f));
		boost::tuple<INT, int> t2(boost::make_tuple(i, j));
		t1 = t2;
		std::cout << "---------------" << std::endl;
	}

	// 응용
	{
		int i = 2011;
		int j = 11;
		boost::make_tuple(boost::ref(i), boost::cref(j));
		// return tuple<INT&, int& const> i에 대한 참조, j에 대한 상수 참조
		std::cout << "---------------" << std::endl;
	}

	// 여러개의 외부 변수를 동시에 바꾸기
	{
		int i = 1;
		int j = 2;
		int k = 3;
		std::cout << i << ", " << j << ", " << k << std::endl;	// output 1, 2, 3
		boost::tie(i, boost::tuples::ignore, k) = boost::make_tuple(5, 6, 7);
		std::cout << i << ", " << j << ", " << k << std::endl;	// output 5, 2, 7
		std::cout << "---------------" << std::endl;
	}

	// element 참조
	{
		boost::tuples::tuple<INT, float int,> tt0(2011, 11, 3.14f);
		std::cout << boost::tuples::get<0>(tt0) << ", " << boost::tuples::get<1>(tt0) << ", " << boost::tuples::get<2>(tt0) << std::endl;
		// output 2011, 11, 3.14f
		boost::tuples::get<0>(tt0) = 1;
		boost::tuples::get<1>(tt0) = 2;
		boost::tuples::get<2>(tt0) = 3;
		std::cout << boost::tuples::get<0>(tt0) << ", " << boost::tuples::get<1>(tt0) << ", " << boost::tuples::get<2>(tt0) << std::endl;
		// output 1, 2, 3
		std::cout << "---------------" << std::endl;
	}


	int n;
	std::cin >> n;

	return 0;
}


728x90

'프로그래밍 > boost' 카테고리의 다른 글

boost::program_options  (0) 2012.11.16
boost::function / boost::tuple 의 활용  (0) 2012.11.07
boost::shared_ptr 과 Virtual Function 과 boost::timer  (0) 2012.10.25
boost::random  (0) 2012.10.24
boost::asio 비동기 서버/클라 step 2  (4) 2012.09.25

댓글