C++ - pair ( aka. vector / typedef / sort )
2022. 8. 8. 01:32ㆍSTUDY/C++
반응형
* Pair 란?
pair는, 두개의 값을 하나로 묶어주는 역할을 하는 struct로 데이터 쌍(pair)을 표현할 때 사용한다.
주로 vector로 묶어 2차원 배열처럼 사용하거나, 좌표를 표현할 때 사용된다.
헤더는 algorithm , vector 에 utility 헤더가 포함되어 있기 때문에, 따로 추가 안해줘도 된다.
pair의 기본 형태는 pair<[first], [second]> p_name; 으로 정의해준다.
pair는 따로 초기화 하지 않고, make_pair 를 사용해 필요할 때 원소를 삽입하는 방식으로 사용한다.
* Pair 멤버 함수
- p.first - pair의 첫번 째 인자를 반환한다.
- p.second - pair의 두번 째 인자를 반환한다.
- make_pair(val1, val2) - val1, val2를 가진 pair를 생성한다.
- algorithm sort를 통해 정렬이 가능하다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
typedef pair<int,int> PP;
bool compare(PP x, PP y) {
return x.second < y.second;
}
int main() {
pair<int, int> p1;
// typedef pair<int, int> P; 처럼 표현도 가능하다.
p1 = make_pair(10,20);
cout << p1.first << '\n';
cout << p1.second << '\n';
pair<int,string> p2;
p2 = make_pair(100, "Hello");
cout << p2.first << '\n';
cout << p2.second << '\n';
cout << "=================" << '\n';
/* VECTOR + PAIR */
vector<pair<int, int> > vec;
vec.push_back(make_pair(11,22));
vec.push_back(make_pair(55,66));
vec.push_back(make_pair(33,44));
cout << vec[0].first << "," << vec[0].second << '\n';
cout << vec[1].first << "," << vec[1].second << '\n';
cout << vec[2].first << "," << vec[2].second << '\n';
cout << "=================" << '\n';
/* PAIR + SORT(base, no conditional) */
sort(vec.begin(), vec.end());
cout << vec[0].first << "," << vec[0].second << '\n';
cout << vec[1].first << "," << vec[1].second << '\n';
cout << vec[2].first << "," << vec[2].second << '\n';
cout << "=================" << '\n';
/* PAIR + SORT(conditional for second value) */
vector<PP> vv;
vv.push_back(make_pair(12,23));
vv.push_back(make_pair(5,61));
vv.push_back(make_pair(3,4));
cout << vv[0].first << "," << vv[0].second << '\n';
cout << vv[1].first << "," << vv[1].second << '\n';
cout << vv[2].first << "," << vv[2].second << '\n';
sort(vec.begin(), vec.end(), compare);
cout << vv[0].first << "," << vv[0].second << '\n';
cout << vv[1].first << "," << vv[1].second << '\n';
cout << vv[2].first << "," << vv[2].second << '\n';
return 0;
}
728x90
반응형
'STUDY > C++' 카테고리의 다른 글
(C++) vector - accumulate, clear/erase, unique(+sort) (0) | 2022.08.18 |
---|---|
C++ - vector of pairs / vector of vectors (1) | 2022.08.09 |
C++ - 수식 함수들 (0) | 2022.08.07 |
C++ - deque (0) | 2022.08.07 |
c++ - stack/queue (0) | 2022.08.07 |