pair 클래스란 두 객체를 하나의 객체로 취급할 수 있게 묶어주는 역할!
생김새는 template <class T1, class T2> struct pair; 와 같은데 <utility> 헤더파일에 존재하며 두 객체 중 첫번째 T1을 first, 두번째 T2를 second로 구분할 수 있다.
멤버함수
1) pair<int, int> p; : 2개의 int형 변수를 가지는 pair 쌍 'p'를 생성한다.
2) make_pair(3, 4); 3과 4를 가지는 pair쌍을 생성한다.
3) pair.fisrt, pair.second : 각각 1번째 객체, 2번째 객체를 반환한다.
4) get<0>(p), get<1>(p) : 각각 p의 1번째 객체, 2번째 객체를 반환한다. (사실 잘 쓰지 않는다)
또한 기본적으로 pair 클래스의 대소비교는 1. first(1번째 인자) , 2. second(2번째 인자) 순으로 비교가 이뤄지기 때문에 pair 클래스를 저장하는 배열이나 벡터 등이 sort 함수를 사용해서 정렬을 할 때 해당 방법대로 정렬!
#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>
int main()
{
std::vector<std::pair<int, int>> v;
v.push_back(std::make_pair(2, 1));
v.push_back(std::make_pair(1, 3));
v.push_back(std::make_pair(1, 2));
sort(v.begin(), v.end());
for (int i = 0; i < v.size(); i++)
std::cout << v[i].first << ' ' << v[i].second << '\n';
}
+tuple
pair 클래스가 2개의 객체만을 저장했다면 그 이상의 객체를 저장할 수 있는게 tuple이다!!
#include <iostream>
#include <string>
#include <tuple>
using namespace std;
tuple<string, int> get_person()
{
int age;
string name;
cout << "이름을 입력하세요: ";
cin >> name;
cout << "나이를 입력하세요: ";
cin >> age;
return make_tuple(name, age);
}
int main()
{
tuple<string, int> person;
person = get_person();
cout << get<0>(person) << '\n';
cout << get<1>(person) << '\n';
}
'씨플플' 카테고리의 다른 글
[C++] map, multimap container 정리 (0) | 2020.03.29 |
---|---|
[C++] vector container 정리 (0) | 2020.03.05 |
[C++] memset 함수 주의점에 대해서 (0) | 2020.02.12 |
[C++] std::cin.ignore(), std::cin.clear(), std::cin.fail() 함수 (0) | 2020.02.11 |