(C++)Pair 알아보기

전성영·2022년 4월 21일
0

알고리즘 공부를 하면서 난생처음 본 pair 사용법에 대해서 알아보자!!

pair 클래스란?

  • 서로 다른 데이터 두 개를 하나로 묶어서 전달 및 처리하는 구조체이다.

두 개의 데이터를 담을 수 있는 게 매력적인 것 같다.
공부하면서 썻었던 것들인데 하나씩 알아보도록 하자.

  1. pair
  2. vector pair
  3. stack pair
  4. queue pair
  5. priority_queuepair

사용법은 다 비슷비슷 한 거 같다.

1. Pair

선언

pair<type, type>p;     //이런식으로 선언을 해준다

크기를 주고싶으면 p 뒤에 [100001]만 붙여주면 끝!

사용방법

.first, .second 로 p의 첫 번째 두 번째 인자를 반환해 준다.

for (int i = 0; i < n; ++i)
	cin >> p[i].first >> p[i].second;

나는 데이터 삽입은 이런 식으로 하는 편인데 make_pair(변수, 변수)를 사용해도 된다!!

정렬

#include<algorithm>

을 추가해준 후

sort(p, p + n);

를 해주면 오름차순 정렬 끝!

첫 번째 인자를 기준으로 sort, 먄약 첫 번째 인자가 같다면 두 번째 인자로 판단!!

만약 내림차순을 해주고 싶다면

bool desc(int x, int y)
{
   return x > y;
}       

를 선언해준 후

sort(p, p + n, desc);

만 해주면 된다!

2. vector pair

선언

vector<pair<type, type>>vec;

얘도 똑같이 크기를 붙여주고 싶다면 vec 뒤에 (100001)을 붙여주자!!

사용방법

Vector의 데이터 삽입과 비슷한데

vec.push_back(make_pair(변수, 변수));

로 데이터를 넣어주면 된다!

접근방법은 q.first, q.second로 하면 된다!! 동일동일

정렬

#include<algorithm>

을 추가해준 후

sort(v.begin(), v.end());

앞으로 나오는 정렬들은 다 첫 번째 인자 기준!!!!!!!!!!!

를 해주면 오름차순 정렬 끝! 만약 내림차순을 해주고 싶다면

#include<functional>

을 추가해준 후

sort(v.begin(), v.end(), greater<>());

을 추가해주면 된다.

3. stack pair

선언

stack<pair<type, type>>st;

사용방법

.first, .second 로 p의 첫번째 두번째 인자를 반환해 준다.

st.push(make_pair(i + 1, height[i]));

ex)이런식으로 앞에는 index를 뒤에는 데이터를 집어넣어줄 수 있다! 꿀팁아닌 꿀팁

4. queue pair

선언

queue<pair<type, type>>q;

사용방법

.first, .second 로 p의 첫번째 두번째 인자를 반환해 준다.

q.push({변수, 변수})

로 데이터를 삽입해주면 된다.

5. prioity_queue pair

선언

priority_queue<pair<int, int>>q; //내림차순

사용방법

.first, .second 로 p의 첫번째 두번째 인자를 반환해 준다.

q.push({변수, 변수})

로 데이터를 삽입해주면 된다.

정렬

#include<functional>

을 추가해준 후

priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>q;  

오름차순으로 선언해주면 된다!!

추가) 데이터를 추가하는 과정에서 make_pair((a, b)) 와 push({a, b}) 둘 다 되는 것 같다.

느낀점

공부하면서 자주 쓰는 것들을 정리해 봤는데 물론 빠진 데이터도 많을 것이다.
점점 깊이 파고들어 공부하면서 많은 내용을 보완해야겠다.
끗!

profile
Slow and Steady

0개의 댓글