BFS를 사용할때 큐에 좌표를 넣어야 하는데, 이때 STL pair를 쓸거다.
#include <bits/stdc++.h>
using namespace std;
int main(void){
pair<int,int> t1 = make_pair(10, 13);
pair<int,int> t2 = {4, 6}; // C++11
cout << t2.first << ' ' << t2.second << '\n'; // 4 6
if(t2 < t1) cout << "t2 < t1"; // t2 < t1
}
make_pair를 이용해서 값을 넣어줄 수도 있고 C++11이상부터는 그냥 중괄호를 써서 쉽게 넣어줄 수 있다. 값의 접근은 각각 first, second를 부름으로서 가능하고 또 pair에는 미리 대소 관계가 설정되어 있어서 편하다.
튜플은 사물의 유한한 순서를 뜻한다. 두 개 이상의 순서대로 정렬된 서로 다른 값들의 모임을 정리할 때 이용한다. c++11이상에서 지원한다.
std::tuple<int, char, string> tupleValue(10,x,"string");
튜플 키워드르르 이용하여 꺽쇠 안에 묶기 원하는 데이터 형을 나열합니다. 튜플은 함수에서 반환값이 두 개 이상일 경우에 사용하면 효과적이다. 두 개 이상의 반환값을 전달하기 위해 포인터나 참조를 이용하거나 구조체를 만들어 전달하는 불편함이 있었습니다. 튜플을 이용한다면 반환값을 몇개이던지 전달할 수 있습니다.
auto typleValue = std::make_tuple(10, 'x', "string")
make_tuple()함수는 튜플을 만들어 주는 함수입니다. auto로 설정된 변수 tupleValue에 make_tuple을 이용하여 초기화하면 tupleValue는 데이터 타입이 튜플이 되는 것입니다. tuple 키워드로 선언한 것과 같은 값을 가지게 됩니다.
std::get<2>(tupleValue);
get() 함수를 이용해 tupleValue에 저장된 값 중 2번 인덱스를 가진 "tuple string"을 가져옵니다. 튜플은 배열과 마찬가지로 제일 처음의 값이 0번 인덱스입니다.
std:swap(tup1, tup2);
swap() 함수는 두개의 튜플의 값을 바꾸는 함수입니다. swap() 함수를 사용하기 위해서 두 개의 튜플이 서로 같은 형의 데이터를 같은 순서로 저장해야 합니다.
std::tie(x,y,z) = tupleValue;
= 연산자를 이용하여 tuple에 저장된 값을 각각 x, y, z에 풀어서 넣어주어야 합니다. 이때 tie 키워드를 사용합니다. 이렇게 값을 따로 분류한 x, y, z에는 make_tuple()로 생성한 값인 10, 'x', "string"이 각각 저장됩니다.
#include <iostream>
#include <string>
#include <tuple>
using namespace std;
tuple<int, string> getAgeandName()
{
int age;
string name;
cout << "나이를 입력하세요: ";
cin >> age;
cout << "이름을 입력하세요: ";
cin >> name;
return make_tuple(age, name);
}
int main()
{
tuple<int, string> personInfo;
personInfo = getAgeandName();
cout << "나이: " << get<0>(personInfo) << endl;
cout << "이름: " << get<1>(personInfo) << endl;
return 0;
}