티스토리 뷰
priority_queue 주요 함수
<기본형태>
- priority_queue<T, Container, Compare> : 원하는 자료형 및 클래스 T를 통해 생성. 여기서 Container는 vector와 같은 컨데이터이며 Compare는 비교함수 클래스이다.
<추가 및 삭제>
- insert(element) : 우선순위 큐에 원소 추가
- pop() : 우선순위 큐에서 top의 원소를 삭제
<조회>
- top() : top에 있는 원소를 반환
<기타>
- empty() : 리스트가 비어있음 true 아님 false반환
- size() : 리스트 원소들의 갯수를 반환
예제 코드
Max Heap 구현
#include<queue> //그냥 queue 인클루드하면됨~
int main(void) {
//priority_queue
priority_queue<int, vector<int>, less<int>> pq; //less 써서 내림차순정렬
//priority_queue<int> pq; //이것도 가능
//push(element)
// 5 2 8 9 1 14 --> less 때문에 14 9 8 5 2 1
pq.push(5);
pq.push(2);
pq.push(8);
pq.push(9);
pq.push(1);
pq.push(14);
//pop()
// 8 5 2 1
pq.pop();
pq.pop();
//top()
// 8
cout << "pq top : " << pq.top() << endl;
//empty(), size()
if (!pq.empty())
cout << "pq size : " << pq.size() << endl;
//pop all
while (!pq.empty()) {
cout << pq.top() << " ";
pq.pop();
}
cout << endl;
}
Min Heap 구현
#include<queue> //그냥 queue 인클루드하면됨~
#include<functional> //greater<int> 사용 시 필요
int main(void) {
//priority queue
priority_queue<int, vector<int>, greater<int>> pq; //greater 써서 오름차순정렬
//push(element)
// 5 2 8 9 1 14 --> greater 때문에 1 2 5 8 9 14
pq.push(5);
pq.push(2);
pq.push(8);
pq.push(9);
pq.push(1);
pq.push(14);
//pop()
// 5 8 9 14
pq.pop();
pq.pop();
//top()
cout << "pq top : " << pq.top() << endl;
//empty(), size()
if (!pq.empty())
cout << "pq size : " << pq.size() << endl;
//pop all
while(!pq.empty()) {
cout << pq.top() << " ";
pq.pop();
}
cout << endl;
}
구조체, 비교함수 이용
#include<queue> //그냥 queue 인클루드하면됨~
struct Custom {
int x;
int y;
int value;
Custom(int value) :x(0), y(0), value(value) {
}
};
//오름차순 정렬***
struct cmp {
bool operator()(Custom t, Custom u) {
return t.value > u.value;
}
};
int main(void) {
//priority_queue
priority_queue<Custom, vector<Custom>, cmp> pq; //구조체라 less<Custom> 이건 안먹는듯
//push(element)
//
pq.push(Custom(5));
pq.push(Custom(2));
pq.push(Custom(8));
pq.push(Custom(9));
pq.push(Custom(1));
pq.push(Custom(14));
//pop()
pq.pop();
pq.pop();
//top()
cout << "pq top : " << pq.top().value << endl;
//empty(), size()
if (!pq.empty())
cout << "pq size : " << pq.size() << endl;
//pop all
while (!pq.empty()) {
cout << pq.top().value << " ";
pq.pop();
}
cout << endl;
}
'Algorithm > C++ STL' 카테고리의 다른 글
[C++] [STL] 7. set (0) | 2019.11.29 |
---|---|
[C++] [STL] 6. hash_map (0) | 2019.11.29 |
[C++] [STL] 5. map (0) | 2019.11.29 |
[C++] [STL] 4. list (0) | 2019.11.29 |
[C++] [STL] 3. vector (0) | 2019.11.29 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 객체
- java
- INSERT
- JDBC 프로그램 작성단계
- .
- Delete
- Oracle
- ojdbc6.jar
- Scott/Tiger
- 객체지향
- 다형성
- 추상화
- jdbc
- JdbcTemplate
- model
- OOP
- Update
- controller
- java 환경설정
- select
- view
- 상속
- MVC
- 캡슐화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함