※ std::tuple 요약
TR1부터 새롭게 추가된 std::tuple은 C++98에서 기본 제공하던 std::pair의 확장 버전으로써,
컴파일 시간에 명시되거나 추론될 수 있는 데이터형 요소들을 가지는 이종 목록(heterogeneous list)이다.
TR1인 Visual Studio 2010에서는 10개의 요소를 저장할 수 있고
C++11을 부분 지원하는 Visual Studio 2013부터는 저장 가능한 항목 개수에 제한이 없고
각각의 항목마다 개별 타입으로 지정 가능하다.
※ std::tuple 특징
std::tuple은 주로, 함수에서 2개 이상의 값을 반환해야할 때 사용한다.
기존에는 구조체를 이용하여 2개 이상의 값을 리턴했지만, 단순히 2개 이상의 값을 반환하기 위해
구조체를 만드는 것은 귀찮을 때도 있고 배보다 배꼽이 더 커지는 일이다.
※ 필요한 헤더 파일
#include <tuple>
※예제
#include <iostream> #include <string> #include <tuple> using namespace std; enum { GET_STATE=0, GET_DESCRIPTION }; std::tuple<bool, string> CheckPowerOfTwo( const int nNum ); int main( ) { std::tuple<bool, string> tupleTest = CheckPowerOfTwo( 8 ); //결과에 따른 문구 출력 cout<<std::get<GET_DESCRIPTION>(tupleTest)<<endl; if( std::get<GET_STATE>(tupleTest) == true ) { //2의 n승이 맞다면 추가 작업 } else { //2의 n승이 아니라면 작업하지 않음 } return 0; } std::tuple<bool, string> CheckPowerOfTwo( const int nNum ) { int nResult = nNum & (nNum-1); if( nResult == 0 ) { return std::make_tuple( true, "2의 n승이 맞음" ); } else { return std::make_tuple( false, "2의 n승이 아님" ); } }
※결과
마땅히 할 예제가 없어서 아무거나 한거니.. 대충 이런식으로 쓰는 것만 보면 되고,
문법은 다음 게시물부터 다루도록 하겠음.