C++ 코테연습중 Pair, make_pari에 대한 기능이있어 간략하게 정리하고자 한다 .
1. Pair 클래스란 ?
두 객체를 하나의 객체로 취급 할 수 있게 묶어주는 클래스로 STL에서 데이터 쌍을 표현할때 사용하게 된다.
<utility> 헤더에 pair객체가 존재하므로 #include<utility> 헤더를 선언해주어야 한다 .
2. Pair 원형
template <class T1, class T2> struct pair;
template <typename T1, typenameT2> struct pair;
T1 = first
T2 = second로 구분한다 .
3. pair 선언 방식
pair < type1, type2 > A
3.1. pair<int , string> p = make_pair(30,"test");
3.2 pair<int, int> p; p= make_pair(30,40);
3.3 auto v = make_pair(30,40);
4. Pair 멤버함수 및 사용방법
pair<[type1], [type2]> p
사용할 데이터 타입 1, 2를 넣고 그 타입의 Pair클래스인 P를 만든다.
p.first : p의 type1인 첫번쨰 인자를 반환한다.
p.second : p의 type2인 두번째 인자를 반환한다.
make_pair(var1, var2) : var1, var2가 들어간 pair를 만들어준다.
operator로 ( ==, !=, < , > , <=, >= ) 가 정의 되어 있어 사용 가능하다.
sort알고리즘에의해 정렬이 가능하다 (정렬시 first 인자 기준으로 우선정렬후 first 인자가 동일하면 second인자기준으로 판단하여 정렬하게 된다)
5. 예제
#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
//1
pair<int, sting> v = make_pair(30,"test");
auto v1 = make_pair(30,"test");
//2
pair<int, int> v2;
v2=make_pair(20,30);
//3
pair<int,int>v3;
v3.first = 1;
v3.second =2;
//4
vector<pair<int,string> > vv1;
vv1.push_back(pair<int, string>(3, "Dok2"));
vv1.push_back(pair<int, string>(6, "DMask"));
vv1.push_back(pair<int, string>(1, "Tiger JK"));
vv1.push_back(pair<int, string>(4, "Block"));
vv1.push_back(pair<int, string>(2, "banana"));
vv1.push_back(pair<int, string>(2, "apple"));
cout << "=== After sort === " << endl;
vector<pair<int, string> >::iterator iter;
for(iter = vv1.begin(); iter != vv1.end(); iter++){
cout << "[" << iter->first << "," << iter->second << "]" << endl;
}
cout << endl;
sort(vv1.begin(), vv1.end());
cout << "=== After sort === " << endl;
for(iter = vv1.begin(); iter != vv1.end(); iter++){
cout << "[" << iter->first << "," << iter->second << "]" << endl;
}
return 0;
}
'programming > C++' 카테고리의 다른 글
#1 C++ Basic (0) | 2022.11.22 |
---|---|
[C++] Template 과 iterator 문법 복습하기 (0) | 2022.03.29 |
[C++] STL MAP 정리 (0) | 2022.03.29 |
[c++] STL Queue , Stack 정리 (0) | 2022.03.29 |
[C++] STL - Vector 정리 (0) | 2021.12.27 |