알고리즘 공부를 하면서 난생처음 본 pair 사용법에 대해서 알아보자!!
pair 클래스란?
- 서로 다른 데이터 두 개를 하나로 묶어서 전달 및 처리하는 구조체이다.
두 개의 데이터를 담을 수 있는 게 매력적인 것 같다.
공부하면서 썻었던 것들인데 하나씩 알아보도록 하자.
- pair
- vector pair
- stack pair
- queue pair
- priority_queuepair
사용법은 다 비슷비슷 한 거 같다.
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);
만 해주면 된다!
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<>());
을 추가해주면 된다.
stack<pair<type, type>>st;
.first, .second 로 p의 첫번째 두번째 인자를 반환해 준다.
st.push(make_pair(i + 1, height[i]));
ex)이런식으로 앞에는 index를 뒤에는 데이터를 집어넣어줄 수 있다! 꿀팁아닌 꿀팁
queue<pair<type, type>>q;
.first, .second 로 p의 첫번째 두번째 인자를 반환해 준다.
q.push({변수, 변수})
로 데이터를 삽입해주면 된다.
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;
오름차순으로 선언해주면 된다!!
공부하면서 자주 쓰는 것들을 정리해 봤는데 물론 빠진 데이터도 많을 것이다.
점점 깊이 파고들어 공부하면서 많은 내용을 보완해야겠다.
끗!