본문 바로가기
C++

pair, tuple

by oncerun 2023. 6. 24.
반응형

 

pair와 tuple은 타입이나 자료구조가 아니다. 이는 utility 라이브러리 헤더의 템플릿 클래스입니다. 

 

C++에서 `pair`와 `tuple`은 두 가지 다른 데이터 구조로, 서로 다른 용도와 특징을 가지고 있습니다.


pair


- pair는 두 개의 요소를 담는 데이터 구조입니다. 각 요소는 서로 다른 자료형일 수 있습니다.


- std::pair 템플릿 클래스로 제공되며, `<utility>` 헤더 파일에 정의되어 있습니다.


- 주로 두 개의 값을 하나로 묶어야 할 때 사용됩니다. 예를 들어, 키-값 쌍이나 두 개의 연관된 데이터를 표현할 때 유용합니다.


- 요소는 .first와 .second 멤버로 접근할 수 있습니다. 예를 들어, `myPair.first`는 첫 번째 요소에 접근하고, `myPair.second`는 두 번째 요소에 접근합니다.


#include <utility>

std::pair<int, std::string> myPair;
myPair = std::make_pair(42, "Hello");

int num = myPair.first;               // 첫 번째 요소에 접근
std::string str = myPair.second;      // 두 번째 요소에 접근



tuple


-  tuple은 임의 개수의 요소를 담는 데이터 구조입니다. 각 요소는 서로 다른 자료형일 수 있습니다.


- std::tuple 템플릿 클래스로 제공되며, `<tuple>` 헤더 파일에 정의되어 있습니다.


- `pair`와 달리, 두 개 이상의 값을 저장할 수 있으며, 요소에 접근하기 위해 인덱스를 사용합니다.


- 주로 여러 개의 값을 그룹화하고 조작해야 할 때 사용됩니다.


- 요소에는 `.get<N>(tuple)` 멤버 함수를 사용하여 인덱스 N을 통해 접근할 수 있습니다. 인덱스는 0부터 시작합니다.


#include <tuple>

std::tuple<int, double, std::string> myTuple;
myTuple = std::make_tuple(42, 3.14, "Hello");

int num = std::get<0>(myTuple);               // 첫 번째 요소에 접근
double value = std::get<1>(myTuple);          // 두 번째 요소에 접근
std::string str = std::get<2>(myTuple);       // 세 번째 요소에 접근

 


`pair`와 `tuple`은 데이터 구조를 다양하게 조작할 수 있는 유용한 도구입니다.

 

 `pair`는 두 개의 요소를 가지고 있으며, `tuple`은 임의 개수의 요소를 가지고 있습니다. 

 

 

`std::tie`는 C++의 표준 라이브러리 함수로서, 여러 개의 변수를 튜플로 묶거나, 튜플의 요소들을 변수로 풀어주는 역할을 합니다. `std::tie`는 `<tuple>` 헤더 파일에 정의되어 있습니다.

`std::tie`를 사용하여 변수들을 튜플로 묶을 수 있습니다. 각 변수는 해당하는 튜플의 요소로 저장됩니다.

#include <tuple>

int a = 42;
double b = 3.14;
std::string c = "Hello";

std::tuple<int, double, std::string> myTuple = std::tie(a, b, c);



위의 코드에서 `std::tie(a, b, c)`는 변수 `a`, `b`, `c`를 `std::tuple<int, double, std::string>` 형식의 튜플 `myTuple`에 묶습니다.


`std::tie`를 사용하여 튜플의 요소들을 변수로 풀어줄 수도 있습니다. 각 변수는 튜플의 해당하는 요소의 값으로 초기화됩니다.


#include <tuple>

std::tuple<int, double, std::string> myTuple(42, 3.14, "Hello");

int a;
double b;
std::string c;

std::tie(a, b, c) = myTuple;




위의 코드에서 `std::tie(a, b, c) = myTuple`는 `myTuple`의 첫 번째 요소를 변수 `a`에, 두 번째 요소를 변수 `b`에, 세 번째 요소를 변수 `c`에 할당합니다.

`std::tie`를 사용하면 변수들을 튜플로 묶거나, 튜플의 요소들을 변수로 풀어줄 수 있어서 데이터를 편리하게 처리할 수 있습니다.

반응형

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

sort func ex1  (0) 2023.06.25
문자열 숫자 변환  (0) 2023.06.24
STL  (0) 2023.06.23
템플릿  (0) 2020.11.12
추상 클래스  (0) 2020.11.12

댓글