반응형
튜플(Tuple)이란?
#include <tuple> 헤더 파일에 존재하는 STL이다.
tuple은 pair와 같이 묶는다는 개념은 같지만,
pair는 두개만 묶을 수 있는 반면, tuple은 여러 개를 묶을 수 있다.
pair처럼 .first, .second, .third ... 방식이 아닌
get<0>(tuplename)
get<1>(tuplename)
...
get<5>(tuplename) 이런식으로 접근해야 한다.
tuple이나 pair을 이용하는 경우는 함수에서 return 값으로 2개 이상을 리턴해야 될 때 이용한다.
보통 구조체를 이용해도 되지만, 구조체를 만듦에 있어 귀찮음, 빠른 가독성을 위해
이러한 STL을 이용한다.
(물론 구조체도 만들지 못하는 코더가 STL부터 습득하면 매우 위험할 것 같다.)
tuple을 이용하는 기본 방식은 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <iostream> #include <cstdio> #include <tuple> using namespace std; tuple<int, char, double> t; int main() { t = make_tuple(1, 'a', 1.2345); cout << get<0> (t) << endl; cout << get<1> (t) << endl; cout << get<2> (t) << endl; return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
만약 cout을 for문을 통해 돌리고 싶어
for (int i=0; i<3; i++)
cout << get<i>(t) << '\n';
이런식으로 돌리게 된다면 작동하지 않는다.
tuple의 인덱스에 접근할 때 get<> 사이에 변수를 넣을 수 없다.
tuple또한 typedef를 통해 tuple을 재정의 한 후 이용할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <iostream> #include <cstdio> #include <tuple> using namespace std; typedef tuple<int, char, double> ticd; ticd t; int main() { t = ticd(1, 'a', 1.2345); cout << get<0> (t) << endl; cout << get<1> (t) << endl; cout << get<2> (t) << endl; return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
반응형
'Applied > 자료구조' 카테고리의 다른 글
배열을 이용한 이진 탐색 트리(Binary Search Tree) 소스 코드 (0) | 2017.03.02 |
---|---|
맵(Map) STL 사용 방법 (0) | 2017.02.20 |
페어(Pair) STL 사용 방법 (0) | 2017.02.14 |
비트 연산자 및 비트 연산 응용 방법 (0) | 2017.02.11 |
배열을 이용한 이진 트리(Binary Tree) (0) | 2016.11.24 |